【发布时间】:2010-12-28 00:44:35
【问题描述】:
假设我们在某个地方存储了数万亿个集合。这些集合中的每一个的域都是相同的。它也是有限和离散的。因此,每个集合都可以存储为长度相对较短(例如:1024)的位字段(例如:0000100111...)。也就是说,位域中的位 X 表示项目 X(1024 个可能的项目)是否包含在给定集合中。
现在,我想设计一种存储结构和一种算法来有效地回答查询:数据存储中的哪些集合将 Y 设置为子集。 Set Y 本身并不存在于数据存储中,而是在运行时指定的。
现在解决这个问题的最简单方法是将 Y 组的位域与数据存储中每个集合的位域一个一个地进行 AND 运算,选择 AND 结果与 Y 的位域匹配的位域。
如何加快速度?是否有树结构(索引)或一些智能算法可以让我执行此查询而不必对每个存储集的位域进行 AND 运算?
是否有数据库已经支持对大型集合进行此类操作?
【问题讨论】:
-
您使用的是什么类型的数据库?专有格式? SQL Server?
-
DB 的选择将取决于它是否有效地支持在巨大集合上的给定集合操作。没有一个 SQL DBS 可以扩展到所需的大小(无论如何,RDMS DB 都不是解决这个问题的最佳选择)。所以选择是专用数据库还是我自己实现的数据库。
-
你找到解决办法了吗?奇怪的是,这个任务没有众所周知的数据库。
标签: database algorithm database-design set set-theory