据我所知,当我们创建聚集索引时,它会以 B 树形式重组表,并在我们尝试查找特定行时使用二分搜索。SSTable也是按key排序的。为什么我们需要稀疏索引作为这种情况的参考表?如果按键排序,它与 B 树在搜索方面有何不同?为什么应用二分搜索还不够?
我试图找到稀疏索引的确切用法,并试图理解如果我们不需要聚集索引这种东西,为什么需要它作为参考表,并且我没有找到这个问题的任何答案。
据我所知,当我们创建聚集索引时,它会以 B 树形式重组表,并在我们尝试查找特定行时使用二分搜索。SSTable也是按key排序的。为什么我们需要稀疏索引作为这种情况的参考表?如果按键排序,它与 B 树在搜索方面有何不同?为什么应用二分搜索还不够?
我试图找到稀疏索引的确切用法,并试图理解如果我们不需要聚集索引这种东西,为什么需要它作为参考表,并且我没有找到这个问题的任何答案。
Cassandra 使用多种方案来加速检索数据的过程。
这些方案之一包括分区索引及其相应的磁盘偏移量。该分区索引具有相应的分区摘要,其中包含 N 个分区键的样本以及它们在分区索引中的位置的映射。
检索数据时,Cassandra 检查分区摘要以获取分区的“最近”位置,因此无需扫描整个分区索引,从而节省时间。
想象一个拥有超过 100K 个 SSTable 的节点。如果没有索引,Cassandra 将需要扫描所有这些文件才能检索请求的数据。有了索引和缓存,数据检索速度快了几个数量级。
如果您对详细信息感兴趣,请参阅Cassandra 如何读取数据。干杯!