B+Tree 中的数据是否应该排序,一次应该加载多少数据?

Should data in B+Tree be ordered and how much data should I be loading at a time?

在我的 B+Tree 中,我在叶级别对键进行了排序,数据指针指向一个单独的数据文件。这个问题是指这个数据文件中数据的顺序。

如我所见,订购时:

未订购时:

或者,当我需要从该节点内的条目访问数据时,是否应该只将整个节点加载到内存中?

寻找关于我应该存储数据的最佳方式的第二种选择 (ordered/unordered) 以及在对一个值执行简单的“获取”时我应该加载多少数据指针?

谢谢!

Alternatively, should I just load entire nodes into memory when I need to access data from an entry within that node?

当然可以。这就是 B 树数据结构家族背后的思想。它不适用于 reading/writing 部分 节点(块) from/to 慢速存储。当需要一个节点时,它会被完整地读入内存(如果尚未加载)、操作并完全写回以持久化它。

由于节点本身的数据操作发生在内存中,因此选择是否保持节点的内容排序并不重要。 read/write 对较慢(呃)存储的操作将对整体性能更具决定性。

考虑任一选择的时间复杂度也无关紧要,因为节点中的键数有预设的最大值。所以所有的单节点操作都可以认为是一个常数时间复杂度。

您可以 时间 不同的实现,看看是否可以做出明确的选择。这个选择将取决于B树的度数。