B+树、LSM树学习与思考

一、B+树:

传统关系型数据库使用较多。如mysql的InnoDB引擎,默认就是B+树

特点:

①针对磁盘存储而优化的N叉排序树,自小而大顺序链接。

②N棵子树的结点中含有M个关键字,每个关键字不保存数据,只用来索引,所有数据都保存在叶子节点
③B+树最多三层,最多需要5次访问,3次获得数据索引,一次数据文件读,一次数据文件写
④B+树读快速,因为有顺序。但是写的时候,如果跨度大,随机IO访问,效率低,磁盘寻道速度不快(技术停滞)影响性能

下图来自网络

二、LSM(Log-Structured Merge-Trees)

特点和形成原理:

读写之间平衡,舍弃部分读的效率,提升写的效率。
①一颗大树变成小树(B+就是三层大树),各小树内部排序并写入内存(所以速度快)。
②达到一定数量小树就写入磁盘。
③磁盘的小树到一定量的时候会合并(merge)变成大一点的树
④读取的时候比B+慢,因为多个小树,要逐个遍历,但每颗小树上面都是有序的

下图来自网络

三、扩散思考

balance的重要性

如网格一般。“田”字形了解一下,或魔法的三维结构,每个小格子都是在“balance”,形成一整个“魔方”


纵向均衡:

①数据读写效率均衡。

②算法的时间复杂度和空间复杂度均衡


横向均衡:

网络,计算机不同维度之间的均衡

①网络均衡,交换机或路由器负载均衡,http请求负载均衡。

②应用服务器负载均衡 

继续细拆

微服务即可诞生,各个服务之间的均衡,相对于所需硬件设备的均衡。

请求量小的服务,配置低些即可。

关键业务,请求量大的服务亦是如此,"balance"一下就好

四、再度发散

工业领域中的建筑,地基是根本。使建筑坚固的原因是"金字塔"结构,三角形的稳定性(这就不扯到数学了)。底面大,上方小(跟微服务一般,有重点地"balance")——>上海东方明珠

桥梁中:每隔一段距离的桥拱也是"balance,设计成"箱梁"(发散到工程力学吧——实心的桥梁,中心部分材料对抗弯性能的影响很小,反而增加了自重

物理,数学,工程,软件。

"道"不变,变的是"术",术业专攻即可

参考:大型网站技术架构 (豆瓣)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LSMB+树是两种常见的索引结构,它们在不同的场景下有着不同的性能表现。 LSM(Log-Structured Merge Tree)是一种基于日志结构的数据结构,主要用于写入密集的场景。它将数据分为多个层级,每个层级都是一个有序的日志文件,最底层是最新的数据。当写入数据时,LSM会将数据追加到最底层的日志文件中,而不是直接更新原始数据。当读取数据时,LSM会先从最顶层的层级开始查找,如果找不到则继续向下查找。由于写入操作只需要追加到日志文件中,而不需要更新原始数据,所以LSM在写入性能上表现较好。但是,在读取操作上可能需要多次磁盘访问,因此在读取性能上相对较差。 B+树是一种平衡的多路搜索,主要用于读取密集的场景。它将数据存储在叶子节点上,并使用指针连接各个叶子节点,形成一个有序的链表。当写入数据时,B+树会按照特定的规则进行插入操作,保持的平衡性。当读取数据时,B+树可以通过二分查找或者顺序遍历的方式快速定位到目标数据。由于B+树的数据存储在叶子节点上,读取操作只需要一次磁盘访问,所以在读取性能上表现较好。但是,在写入操作上可能需要进行节点的分裂和合并,因此在写入性能上相对较差。 综上所述,LSM在写入性能上表现较好,适用于写入密集的场景;而B+树在读取性能上表现较好,适用于读取密集的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值