Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Indexing cassandra中分区摘要的内部结构_Indexing_Cassandra_Partitioning_Nosql - Fatal编程技术网

Indexing cassandra中分区摘要的内部结构

Indexing cassandra中分区摘要的内部结构,indexing,cassandra,partitioning,nosql,Indexing,Cassandra,Partitioning,Nosql,我在看: 关于这次演讲,我有一个问题 分区摘要实际上代表什么?:) 我的第一个想法是它只是一个缓存,可以保存x%的密钥位置。 这意味着126中大约有一个请求可以直接获得密钥,而其他125必须遍历整个表。 但我认为这是相当无效的 我的第二个想法是分区摘要能够以某种方式为指定键提供一系列索引,其中给定键的行应该存在。 但我无法想象这是如何实现的?特别是如果此表的大小应为|分区索引|/Index|u interval 我想到的另一个问题是SSTable能否为一个特定的键保留多个条目 谢谢, krzyc

我在看: 关于这次演讲,我有一个问题

分区摘要实际上代表什么?:)

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

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

我想到的另一个问题是SSTable能否为一个特定的键保留多个条目

谢谢,
krzychusan

分区摘要是分区索引的一个抽样。分区摘要是内存中的一种结构,它减少了在索引中查找分区键所需的扫描时间

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

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

在这个过于简化的示例中,如果分区摘要设置为每10个分区键采样一次,那么它将包含到10个分区键的映射以及它们在分区索引中的磁盘位置。例如,pk001->文件开头,pk010->pk010在索引文件中的位置,等等

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

因此,C*根据摘要提供的信息查找索引文件中pk020的位置。然后执行从pk020到pk027的极短扫描

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