
文章插图
整个归并的过程并不难 , 类似于归并排序当中的归并操作 , 只是我们需要加上状态的判断 。
总结
我们回顾一下LSMT的整个过程 , 虽然说是树 , 但其实树形结构并不明显 。但如果我们观察一下查找元素时候的查询顺序 , 其实是从Memtable , 然后沿着SSTable顺序往下的 , 这点和树形结构是一致的 , 可以看成一个比较”窄“的树 。如果还是觉得这个数据结构长得不那么像一棵树是正常的 , 我们不用纠结 。另外 , 从原理上来看 , 简直有些简单粗暴地过头 , 但是从实际结果来看 , 它的效果却非常好 , 在Hbase、kudu当中有着广泛应用 。
我们对比一下它和B+树 , 在B+树当中 , 我们为了能够快速读取而使用了多路平衡树 , 这样可以迅速找到对应key的节点 。我们只需要读入节点当中的内容即可 , 但也正因为平衡树的结构 , 导致了我们在写入数据的时候会引起树结构的变动 , 也就涉及到多次文件的随机读写 。当我们数据的吞吐量很大的时候 , 会带来巨大的开销 。而LSMT则不然 , 我们读取的时候效率比B+树要低 , 但是对于大数据的写入支持得更好 。在大数据场景当中 , 许多对于数据的吞吐量有着很高的要求 , 比如消息系统、分布式存储等 。这个时候B+树就有些无能为力了 , 但是同样 , 如果我们需要保证查找的效率 , 那LSMT也不太合适 , 因此两者其实并没有谁比谁更优 , 而是针对的场景不同 。
最后 , 关于LSMT , 其实也有很多个变种 , 其中比较有名的是Jeff Dean写的Leveldb , 它在LSMT的基础上做了一些改动 , 进一步提升了性能 , 相关的内容我们放到下篇文章 。
今天的文章就是这些 , 如果觉得有所收获 , 请顺手点个关注或者转发吧 , 你们的举手之劳对我来说很重要 。
【详解Hbase底层的数据结构——LSMT】
推荐阅读
- 组策略 WindowsServer2008的使用详解
- python之装饰器详解
- golang函数调用流程详解
- 中医详解练太极拳的五大好处
- 详解mybatis和Mybatis-Plus区别
- 详解:一进大门直接看见客厅好吗?
- 喝玫瑰花茶的功效,详解玫瑰花茶的功效
- 指定扫描目标和主机发现 Nmap使用详解
- 全网最全一篇数据库MVCC详解,不全你打我
- 详解玉兰油化妆品价格
