理解 LSM 树:写入密集型数据库的秘诀
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 日志结构的合并树(log-structured merge-tree LSM 树)通常是在处理大量写任务时使用的数据结构。通过顺序写来优化写入路径。 LSM 树是许多数据库(包括 BigTable, Cassandra, Scylla,和 RocksDB)背后的核心数据结构。 排序字符串表 LSM 树使用排序字符串表(Sorted Strings Table 简称 SSTable)的格式保存到磁盘。如名称所示,SSTables 是一种用于存储键-值对的格式,其中键按有序排列。SSTable 将由多个名为段(Segments)的有序文件组成。一旦将这些数据段写入磁盘后,就是不可变的。简化示例如下: 我们可以看到,每个段中的键-值对都是按键排序的。接下来看看什么是片段以及它是如何生成的。 写数据 回想一下,LSM 树只执行顺序写入。我们可能想知道,当值以任意顺序写入时,如何以有序格式的顺序写入数据?这可以通过使用内存中的树结构来解决。通常被称为内存表(memtable),但底层数据结构通常是某种形式的排序树,如红黑树。当写入数据时,将添加到此红黑树中。 我们的写入将存储在这个红黑树中,直到树达到预定义的大小。一旦红黑树有足够的条目,它就会按有序的顺序作为磁盘上的一个段刷新到磁盘