在Designing Data Intensive Applications中,Martin 介绍了一种称为 LSM-trees 的数据结构。
主要有 3 个部分:内存中的 memtable(通常是红黑树)、内存中的稀疏索引和磁盘上的 SSTable(又名段)。他们像这样一起工作:
当写入发生时,它首先进入内存表,当它变满时,所有数据都被刷新到一个新的段中(所有键都已排序)。
当发生读取时,它首先查找内存表。如果该键不存在,它会查找稀疏索引,以了解该键可能驻留在哪个段。见图 1。
定期地,压缩发生,将多个段合并为一个。见图 2。
从图 2 可以看出,键在段内排序,但键不在段之间排序。这让我想知道:我们如何保持索引中的稀疏索引 st 键具有增加的偏移量?