cassandra中的分区内部结构

use*_*768 1 indexing partitioning cassandra nosql

我正在观看:https: //academy.datastax.com/courses/learning-cassandra-read-path/understanding-partition-summaries-and-indexes 我对此演示文稿有疑问.

分区摘要代表什么?:)

我的第一个想法是它只是一个缓存,保持x%的键位置.这意味着大约一个126的请求可以直接获得一个密钥而其他125个必须遍历整个表.但我认为这是非常无效的.

我的第二个想法是,分区摘要以某种方式能够为指定的键提供一系列索引,其中应存在给定键的行.但我无法想象这是如何实现的?特别是如果这个表应该是大小|分区索引|/index_interval

我想到的另一个问题是,SSTable可以为特定密钥保留许多条目吗?

谢谢,krzychusan

Akb*_*med 8

分区摘要是分区索引的示例.分区摘要是内存中结构,可减少在索引中查找分区键所需的扫描时间.

一个非常简单的例子将有助于解释这个概念.

假设分区索引文件中有100个分区键:pk001到pk100.分区键按排序顺序存储,因此我们知道pk027位于pk025之后.

在这个简化的示例中,如果将分区摘要设置为每隔10个分区键进行一次采样,那么它将包含一个映射到十个分区键及其在分区索引中的磁盘上的位置.例如,pk001 - >文件的开头,pk010 - > pk010在索引文件中的位置,依此类推.

现在,当C*收到pk027的请求时,它知道pk027位于pk020之后.此外,摘要(每10个分区键采样)知道pk020的确切位置.

因此,C*根据摘要提供的信息在索引文件中寻找pk020的位置.然后它执行从pk020到pk027的非常短的扫描.

总之,分区摘要是分区索引文件的内存中采样,它允许Cassandra在索引文件中执行寻找分区的大致位置,然后进行非常短的扫描.