读取路径和压缩偏移图

时间:2018-05-31 19:19:31

标签: cassandra

我试图了解卡桑德拉的阅读路径而无法理解为什么我们需要一个 压缩偏移图。

https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlAboutReads.html

enter image description here

  

分区索引驻留在磁盘上,并存储映射到其偏移量的所有分区键的索引。

     

压缩偏移映射存储指向磁盘上将找到所需分区数据的确切位置的指针。

为什么我们需要它们?为什么不能将索引存储指针存储到磁盘上的确切位置?

我很抱歉有一个愚蠢的标题,但是那个stackoverflow问我,我无法使用"为什么我们需要一个压缩偏移图如果我们有分区索引?"

1 个答案:

答案 0 :(得分:5)

文件以块的形式压缩。默认情况下,压缩64k数据,然后压缩64k等。索引文件中写入的偏移量是未压缩数据的偏移量。这是因为在写入时,它知道到目前为止已写入了多少字节,因此在开始新分区时使用它来标记。压缩偏移映射压缩偏移量及其未压缩位置,以便它知道哪个块开始解压缩以从索引处获得某个未压缩偏移量的分区。

如果分区存在于64k压缩块的中间,则需要对整个块进行解压缩。由于压缩算法的工作原理,您无法在其中间开始阅读。这就是为什么在某些情况下减少块大小是有意义的,因为它会减少读取一个小分区的开销。