Aerospike:一级和二级索引在内部如何工作

Tar*_*run 3 clustered-index distributed-database aerospike

我们正在使用Aerospike DB,并正在阅读文档。
我找不到很好的算法解释来解释主索引和次索引的工作原理。
该文档说,它使用某种分布式哈希+ B树。

有人可以解释一下。

Ron*_*zer 5

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

每个名称空间都有4096个分区,这些分区通过分区图均匀地分布到群集的节点上。在节点内,主索引是一种内存结构,该结构仅索引分配给该节点的分区。

主索引有一个哈希表,该哈希表导致了小枝。每个小枝都是一棵红黑树,其中包含部分元数据。可以通过配置每个分区的小枝数量partition-tree-sprigs

因此,要查找群集中的任何记录,客户端首先使用记录的摘要查找正确的节点,并且只需对分区图进行一次查找。然后,拥有记录主分区的节点将在主索引中查找其元数据。如果此命名空间将数据存储在SSD上,则元数据包括设备,记录的块ID和字节偏移,因此可以通过一次读取操作将其读取。记录连续存储在磁盘或内存中。

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

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

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