这只是出于好奇问题。假设您有一个包含1m行的数据库表,并且您希望经常进行查询,例如寻找男性或女性,美国或非美国,选民或非选民等,定义位图索引显然非常有效对于表中每个位代表一个或者条件的表。
但是,要执行查询,您仍然必须扫描(可能)所有索引,并选择匹配的行。
我的问题是是否存在某种位图优化存储,以便在硬件中预先创建位'通道'?我正在设想类似于针织针从旧图书馆目录系统中提升穿孔卡片的东西。换句话说,不是逐行通过存储器位置,芯片可以通过电子方式拉出匹配的行,因为每个位通道都有硬件连接?我感觉大脑必须像这样工作。如果我想到“所有蓝色物体”,然后将其限制为“所有长蓝色物体”,然后将其限制为“所有长蓝色重物”,我的大脑毫不费力地做到了,我确信它不会扫描我所知道的所有物体关于每一次。看起来似乎有一些神经元为不同的维度提供了快速检索的途径。我只是想知道硬件世界中是否有这样的东西?
谢谢!
答案 0 :(得分:0)
你当然可以连接一些逻辑来执行此操作(例如使用programmable logic devices),但是你需要大量的逻辑元素和连接,这使得这些电路对于大型数据库构建来说可能很昂贵。
例如,人们必须在每个“行”中构建匹配逻辑(这个位被选中吗?所需的值是多少?),每行给出一个信号(选择/未选择)。
然后,您将拥有一条带有一百万个输出线的逻辑电路(告诉您选择了哪些记录),您可能在某些时候必须“序列化”,例如当您与计算机内部的PCI总线连接时(即首先将结果发送到记录0然后传输1等,或者传输所选记录的数量)。
由于现代CPU中的按位运算速度很快(对于逻辑运算只需要一个时钟周期,例如按位and
,or
和'xor'),您可能无法使用这样的定制电路与优化软件相比(不提'硬件'开发和测试工作),除非你有一个非常特殊的用例。
答案 1 :(得分:0)
为什么要发明已存在的东西?