个人主页静态网站,德州市德城区城乡建设局网站,如何让百度收录自己的网站信息,cms 多个网站一、什么是LSM-TREE
LSM Tree 是一种高效的写优化数据结构#xff0c;专门用于处理大量写入操作 在一些写多读少的场景#xff0c;为了加快写磁盘的速度#xff0c;提出使用日志文件追加顺序写#xff0c;加快写的速度#xff0c;减少随机读写。但是日志文件只能遍历查询…一、什么是LSM-TREE
LSM Tree 是一种高效的写优化数据结构专门用于处理大量写入操作 在一些写多读少的场景为了加快写磁盘的速度提出使用日志文件追加顺序写加快写的速度减少随机读写。但是日志文件只能遍历查询。不支持随机查询提出使用LSM-TREE。除了利用磁盘顺序写之外还划分了内存磁盘多层的合并结构
LSM-TREE(log structured tree) 就是多层的SSTable 1、什么是SSTable SSTable就是存放在磁盘的一个数据块里面存放可变数组长度的kv数组。SSTable内部按照key进行排序 LSM-TREE类似于ES 写数据 写数据先写在内存的MemtableMemtable写满后才写入磁盘。 当每层的磁盘上的SSTable的体积超过一定的大小或者个数会周期的进行合并。此步骤也称为Major Compaction。这个阶段会真正的清除掉被标记删除掉的数据类似ES段合并。合并完后进入下一层因为SSTable内部都是有序的。因此使用mergeSort算法可以快速合并 O(n)复杂度。 查询 1、先在内存里面查询如果查询到就返回。 2、从上到下从左到右。遍历每一层级的SSTable的布隆过滤器快速判断数据在不在此SSTable。最坏情况需要遍历所有SSTable的filter 3、SSTable内部有序进行二分查找 4、刚写入的数据在上面层级历史数据经过合并落入下层。因此LSM-TREE非常适合时序数据库这种只查询最近写入的热数据的场景
一、influxdb和ES都是准实时都有段合并。 为什么不用倒排索引
influxDb属于写多读少ES适用读多写少的场景 influxdb序列数据写多读少适用于LSM-TREE 。influxdb根据tag查找序列 适用于倒排索引 influxdb两种结构都使用了 二、LSM-TREE 分层结构和B数很类似有什么区别
1、LSM-Tree的设计思路是将数据拆分为几百M大小的SegmentsSSTable并是顺序写入SSTable太大对于随机读写不友好。BTree则是将数据拆分为固定大小的Block或Page, 一般是4KB大小。block块小就适用于随机读写。 2、B树支持随机读写因此插入更新都是实时的。而LSM-TREE更新和ES类似先删除再新增准实时。 3、B树是全局有序的每一层节点页内部数据 和节点之间 数据都是全局有序。 而SSTable是局部有序只有SSTable内部有序SSTable无序。只有层级下沉段合并的时候才会进行mergeSort形成新的SSTable
LSM-TREE的应用场景
levelDB, rocksdb influxDb等