网上搜索「MongoDB B+树」出来的结果满篇都是「为什么MongoDB索引用B-树而MySQL索引用B+树」,但看了很多篇文章都感觉前后逻辑不严密,有点强答的感觉,于是去翻了下官方文档,发现MongoDB用的也是B + ^+ +树
官方文档
WiredTiger maintains a table’s data in memory using a data structure called a B-Tree ( B+ Tree to be specific), referring to the nodes of a B-Tree as pages. Internal pages carry only keys. The leaf pages store both keys and values.
WiredTiger 使用称为B-Tree(具体为B+ Tree )的数据结构在内存中维护表的数据,将B-Tree的节点称为页,内页只携带键,叶页存储键和值。
B-Tree
维基百科:B+树属于B-Tree的变体
常见关系型数据库默认索引结构均为B + ^+ +树(具体见各种数据库索引的数据结构)
B-Tree中文翻译是「B树」而非「B减树」
- 狭义B-Tree:我们通常所说的B树
- 广义B-Tree:包括 B + ^+ +树、B ∗ ^* ∗树、B ∗ + ^{*+} ∗+树
很多英文文档和论文里说的B-Tree都是广义B-Tree,一般看到B-Tree建议联系上下文描述判断它到底指「狭义B树」还是「广义B-Tree」