我参加了一门课程,我对 B+Tree 结构中的几个概念感到困惑。我知道它的作用以及它和 BTree 之间的区别,但是当我看到 2 个不同的示例时,我有点矛盾:
示例 2 是我在网络上注意到的最流行的示例。我的导师告诉我,在示例 2 中,叶子的指针也可以指向存储桶,但稍等一下,它与第一个示例相同,但最后一个指向左侧的指针指向下一个叶子。
问题:b+tree 叶子是否必须有指向下一个叶子的指针?
我的教练告诉我让自己更容易将桶假设为具有指向下一个桶的指针的叶子。最好不要用错误的方式理解某事。
关于 B+tree 结构,我内心存在这种冲突。b+tree 有多个结构吗?
b+tree 叶子不一定要有指向下一个叶子的指针,但它是一种广泛使用的优化,允许有效扫描值范围,例如,在关系数据库的上下文中,支持
WHERE field BETWEEN x AND y
或WHERE field > x
谓词。您经常看到一个叶子指向下一个和上一个叶子,也支持双向扫描(对于WHERE field < x
)。除了搜索谓词支持之外,它还可能对记录排序和聚合有用。实际上并没有太大的区别。直接指针链接快捷方式是完全可选的。如果您不使用任何快捷方式,则跳转到下一个链接需要大约 3 或 4 个指针。如果该算法使用大量的水平跳跃,则可以节省时间;如果没有,你会浪费一些额外的资源。