为什么MySQL数据库用B+树,MongoDB用B树

数据结构:

B树是所有节点上都有数据,单条查询的效率不稳定,最好就是情况可以直接找到,但最差情况需要一直找到叶子节点,叶子节点之间没有用指针连接。
B+树 所有的数据都存放在叶子节点上,非叶节点只起到索引的作用,单条查询效率稳定,查询任何信息都需要查找到叶子节点为止,叶子节点之间通过双向指针连接,可以通过这些指针有序的遍历数据。
因此,B树单条查询的平均效率比B+树好,遍历数据B+树比B树好。

MySQL用B+树可能是因为对数据的范围遍历操作比较多,MongoDB用B树是因为单条数据查询比较多。

为什么呢?

这可能和mysql是关系型数据库,MongoDB是非关系型数据库有关。
关系型数据库采用了关系模型,一般每张表会对应一个抽象实体,表与表之间存在着一对一、一对多、多对一等关系,比如说学生表和导师表,一个学生只有一个导师,而一个导师有多个学生,当我们需要查询某个导师的学生时,就需要遍历学生表。
非关系型数据库中没有表的概念,只有类似的集合概念,一个集合中存放的文档之间可以是不同的(包含的属性可以不同),适合于数据存储不需要固定的模式,或者数据类型经常变化的情况。在NoSQL里面这种一对多可以采用嵌入文档,老师集合中每个文档(记录),有一个字段属性是学生,而值是一个数组类型,数组里面存放的又是学生的记录。因此直接查某个老师来获取学生,而不用去遍历数据。
当然非关性数据库里面的集合也可以照着关系型数据库的表来建,但这样就不符合NoSQL类型数据库的设计理念。如果对一个NoSQL经常使用遍历,就可能是数据库集合的设计出问题,或者是选错了数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值