加载中...

SSTable(Sorted String Table,有序字符串表)是一种不可变的磁盘文件格式,存放按键排序的键值对,概念由 Google 在 2006 年的 Bigtable 论文中提出,是 LSM 树架构的核心组件。
典型 SSTable 由数据块(data block)、索引块(index block)、布隆过滤器和文件尾(footer)组成。数据块内键有序排列并常做前缀压缩;索引块记录每个数据块的起始键与偏移,支持二分定位;布隆过滤器用于快速判断键不存在,避免无谓的磁盘读取。
不可变性是 SSTable 的关键设计:文件一旦写成就不再修改,更新与删除通过写入新记录(删除用墓碑标记)表达,由后台 compaction 合并去重。这使顺序写代替随机写,极大提升写吞吐,也简化了并发与缓存管理。
Bigtable、HBase、Cassandra、LevelDB、RocksDB 等系统均以 SSTable(或其变体)作为磁盘存储格式。

登录 后参与讨论
暂无讨论,来发表第一条评论吧