MongoDB 中索引选择B

50次阅读
没有评论

共计 1109 个字符,预计需要花费 3 分钟才能阅读完成。

这期内容当中丸趣 TV 小编将会给大家带来有关 MongoDB 中索引选择 B - 树的原因是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

一、B- 树和 B + 树的区别

很明显,我们要想弄清楚原因就要知道 B - 树和 B + 树的区别。为了不长篇大论。我们直接给出他们的形式总结他们的特点。

1、B- 树

B- 树是一种自平衡的搜索树,形式很简单:

这就是一颗 B - 树。针对我们这个问题的最核心的特点如下:

(1)多路,非二叉树

(2)每个节点既保存索引,又保存数据

(3)搜索时相当于二分查找

在这里我们假定都已经了解了 B 树相关的结构。

2、B+ 树

B+ 树是 B - 树的变种

最核心的特点如下:

(1)多路非二叉

(2)只有叶子节点保存数据

(3)搜索时相当于二分查找

(4)增加了相邻接点的指向指针。

从上面我们可以看出最核心的区别主要有俩,一个是数据的保存位置,一个是相邻节点的指向。就是这俩造成了 MongoDB 和 Mysql 的差别。为什么呢?

3、B- 树和 B + 树的区别

(1)B+ 树查询时间复杂度固定是 logn,B- 树查询复杂度最好是 O(1)。

(2)B+ 树相邻接点的指针可以大大增加区间访问性,可使用在范围查询等,而 B - 树每个节点 key 和 data 在一起,则无法区间查找。

(3)B+ 树更适合外部存储,也就是磁盘存储。由于内节点无 data 域,每个节点能索引的范围更大更精确

(4)注意这个区别相当重要,是基于(1)(2)(3)的,B- 树每个节点即保存数据又保存索引,所以磁盘 IO 的次数很少,B+ 树只有叶子节点保存,磁盘 IO 多,但是区间访问比较好。

有了他们的区别之后,现在我们再来解释这个原因就好多了。

二、原因解释

想要解释原因,我们还必须要了解一下 MongoDB 和 Mysql 的基本概念。

1、MongoDB

MongoDB 是文档型的数据库,是一种 nosql,它使用类 Json 格式保存数据。比如之前我们的表可能有用户表、订单表、购物篮表等等,还要建立他们之间的外键关联关系。但是类 Json 就不一样了。

我们可以看到这种形式更简单,通俗易懂。那为什么 MongoDB 使用 B - 树呢?

MongoDB 使用 B - 树,所有节点都有 Data 域,只要找到指定索引就可以进行访问,无疑单次查询平均快于 Mysql。

2、Mysql

Mysql 作为一个关系型数据库,数据的关联性是非常强的,区间访问是常见的一种情况,B+ 树由于数据全部存储在叶子节点,并且通过指针串在一起,这样就很容易的进行区间遍历甚至全部遍历。

上述就是丸趣 TV 小编为大家分享的 MongoDB 中索引选择 B - 树的原因是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计1109字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)