我正在开发一个 NoSQL 数据库,它的一些索引使用 64 位基于哈希的 B+ 树,现在我正在研究在持久性 B+ 树上应用快照隔离多版本并发控制 (SI MVCC)。
我遇到的第一个问题是 B+ 树中的每个节点都有一个指向树中下一个节点的指针。一个 64 位指针,指向下一个节点所在文件中的字节地址。因此,当我更新记录节点时,B+ 树的该分支中的所有节点一直到根节点都必须更新 - 是否有更好/更简单的方法来避免如此多的磁盘更新(通常是 4 '磁盘扇区/节点必须在每次记录写入时更新,每个节点都适合单个磁盘扇区)?一个单独的目录记录可能包含所有链接节点的概述?