Logo
Section 1 / 3

写入路径

探索Cassandra的写入路径,以及其内存和磁盘上的存储结构与处理流程,这些机制共同实现了极快的读写性能。

导入

写入路径

探索Cassandra的写入路径,以及其内存和磁盘上的存储结构与处理流程,这些机制共同实现了极快的读写性能。

...
Multi-datacenter集群的高层写入路径
...
副本上的写入路径
...
针对courses表的多个SSTable在合并过程中生成包含合并记录的新SSTable

合并策略

合并策略描述适用场景
SizeTieredCompactionStrategy (STCS) - 默认策略当存在多个大小相近的SSTable时触发合并。通用工作负载、写入密集型工作负载
LeveledCompactionStrategy (LCS)将固定且较小尺寸的SSTable分组到不同层级中,每一层的SSTable数量是前一层的十倍。同一层内的SSTable保证无重叠。存在数据重叠的SSTable会被合并。读取密集型工作负载
TimeWindowCompactionStrategy (TWCS)在配置的时间窗口结束时,使用STCS将所有SSTable合并为一个。时间序列数据
...
SSTable组件分布在堆外内存和磁盘上

compressor_name用于分块压缩的算法:LZ4Compressor、ZstdCompressor、SnappyCompressor 或 DeflateCompressor
options压缩算法的附加选项
chunk_length_in_kb用户可配置的块大小,默认为16KiB。未压缩的数据文件被划分为固定大小的块,每个块独立压缩。压缩后的块长度可能不同
data_length未压缩数据的总长度
chunks_offsets压缩后块在 compressed data.db 文件中的偏移列表。要从未压缩文件的位置 p 读取数据,需将包含该位置数据的压缩块加载到内存并解压。该压缩块起始位置为 chunks_offsets[p/chunk_length_in_kb]
...
Index.db 列出SSTable中所有分区的键及其位置等信息
...
Summary.db 是一个堆外内存中的内存结构,存储了Index.db文件中每128个条目的信息
...
Filter.db 是一种概率性数据结构,用于判断某个分区键是否“不存在”或“可能存在于”SSTable中
...
SSTable组件

可调一致性

读取路径