作者:东cz莞痴 | 来源:互联网 | 2022-12-15 14:09
我试图了解Cassandra的读取路径,但无法理解为什么我们需要压缩偏移量映射。
https://docs.datastax.com/zh-CN/cassandra/3.0/cassandra/dml/dmlAboutReads.html
分区索引位于磁盘上,并存储所有映射到其偏移量的分区键的索引。
压缩偏移量映射将指针存储到磁盘上可以找到所需分区数据的确切位置。
为什么我们都需要它们?为什么分区索引不能将指针存储到磁盘上的确切位置?
很抱歉,我有一个愚蠢的标题,但这就是stackoverflow要求我的,我不能使用“如果有分区索引,为什么我们需要压缩偏移量映射?”
1> Chris Lohfin..:
该文件被压缩为块。默认情况下,将压缩64k的数据,然后再压缩64k等。索引文件中写入的偏移量是未压缩数据的偏移量。这是因为在写入时,它知道到目前为止已写入了多少字节,因此每当启动新分区时都使用它来标记。压缩偏移量映射了压缩偏移量及其未压缩位置,因此它知道要开始解压缩的块,以到达索引的某个未压缩偏移量到达分区。
如果一个分区存在于64k压缩块的中间,则需要对整个块进行解压缩。由于压缩算法的工作原理,您无法开始阅读其中的内容。这就是为什么在某些情况下减小块大小的原因,因为这会减少读取微小分区的开销。