专门用于位图索引的硬件?

3
这只是一个好奇的问题。假设您有一个包含100万行数据的数据库表,您经常需要查询男性或女性、美国或非美国、投票者或非投票者等条件,为该表定义位图索引显然非常高效,其中每个位表示一个二选一的条件。
但是,为了执行查询,仍然必须扫描(可能)所有索引,进行位运算以选择匹配的行。
我的问题是,是否存在某种位图优化存储方式,使得位“通道”在硬件中预先创建?我想象一下,类似于织针从旧的图书馆目录系统中提取打孔卡片。换句话说,芯片可以通过每个位通道的硬件连接电子地提取出匹配的行,而不是逐行遍历内存位置?我觉得大脑一定是这样工作的。如果我想到“所有蓝色的物体”,然后限制为“所有长形蓝色的物体”,然后是“所有长形蓝色重物”,我的大脑会毫不费力地完成它,我相信它并不是每次都在扫描我知道的所有物体。似乎有一些神经元为不同的维度提供了快速检索的路径。我只是想知道硬件世界是否有类似的东西?
谢谢!
2个回答

0

你当然可以编写一些逻辑来执行这个操作(例如使用可编程逻辑器件),但是你需要大量的逻辑元素和连接,使得这样的电路在构建大型数据库时可能会变得昂贵。

例如,你必须在每个“行”中构建匹配逻辑(这个位被选中了吗?所需值是什么?),从而为你提供每行一个信号(选中/未选中)。

然后,你将拥有一个具有一百万个输出线的逻辑电路(告诉你哪些记录被选中),你可能在某个时候不得不对其进行“串行化”,例如当你与计算机内部的PCI总线进行接口时(即首先传输记录0的结果,然后是1等等,或者传输所选记录的编号)。

由于现代CPU中的位运算非常快速(例如按位andor和'xor'等逻辑运算应该只需要一个时钟周期),因此与优化软件相比,你使用这样的自定义电路可能并没有太多优势(更不用提“硬件”开发和测试工作),除非你有一个非常特殊的用例。


非常有趣。感谢您的专业回答。是的,成本效益可能不合理,这确实有道理。 - bruce

0

啊 - 这正是我想知道的东西 - 谢谢! - bruce
看起来我建议重新发明轮子 :-) - Andre Holzner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接