【问题标题】:Read path and compression offset map读取路径和压缩偏移图
【发布时间】:2018-08-13 15:20:59
【问题描述】:

我正在尝试了解 Cassandra 读取路径,但不明白为什么我们需要 压缩偏移贴图。

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

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

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

为什么我们两个都需要?为什么分区索引不能存储指向磁盘上确切位置的指针?

我很抱歉这个愚蠢的标题,但这就是stackoverflow问我的问题,我不能使用“如果我们有分区索引,为什么我们需要压缩偏移图?” p>

【问题讨论】:

  • 您附上的截图解释了读取路径。
  • @AV94 谢谢,已修复

标签: cassandra


【解决方案1】:

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

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

【讨论】:

  • 哦,是的,我不知道数据是如何压缩的。所以数据不是逐行压缩的,而是一些固定大小的块,对吧?我们需要一个索引指向块,第二个索引指向这些块中的确切位置?
  • 您可以将块大小指定为chunk_length_kb 选项。更大的块可能会提高压缩率,但需要读取更多数据才能访问其中的记录
猜你喜欢
  • 2010-09-08
  • 1970-01-01
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多