一、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,设计成"箱梁"(发散到工程力学吧——实心的桥梁,中心部分材料对抗弯性能的影响很小,反而增加了自重)
物理,数学,工程,软件。
"道"不变,变的是"术",术业专攻即可