4

我们正在使用 Aerospike DB 并且正在阅读文档。
我找不到解释主要和次要索引如何工作的算法的良好解释。
文档说它使用某种分布式哈希 + B 树。

有人可以解释一下吗。

4

1 回答 1

6

索引是分布式哈希和分布式树的混合。它保存Aerospike 集群中每条记录的元数据。

每个命名空间有 4096 个分区,通过分区映射均匀分布到集群的节点上。在节点内,主索引是一个内存结构,它只索引分配给节点的分区。

主索引有一个指向sprigs的哈希表。每个小枝都是一棵红黑树,其中包含部分元数据。每个分区的枝条数量可通过partition-tree-sprigs.

因此,要在集群中查找任何记录,客户端首先使用记录的摘要通过分区映射查找正确的节点。然后,持有记录的主分区的节点将在主索引中查找其元数据。如果这个命名空间在 SSD 上存储数据,元数据包括记录的设备、块 ID 和字节偏移,因此可以通过单次读取操作读取。记录是连续存储的,无论是在磁盘上还是在内存中。

主索引用于针对单个记录(由其键标识)的操作,或针对多条记录(由键列表标识)的批处理操作。它也被 scans 使用

二级索引是集群每个节点内的可选内存结构,它也只索引分配给每个节点的分区的记录。它们用于查询操作,这些操作旨在基于非键谓词返回许多记录。

因为 Aerospike 是一个分布式数据库,一个查询必须到达所有节点。并发级别(一次查询多少个节点)通过客户端中的查询策略进行控制。接收查询的每个节点都必须根据适当​​的二级索引查找谓词的标准。这将返回零到多条记录。此时可以应用可选的谓词过滤器。然后将二级索引查询找到的记录流回客户端。请参阅有关管理索引的文档。

于 2018-07-27T14:27:58.463 回答