I'm developing on a NoSQL database that uses 64-bit hash-based B+ trees for some of its indexes, now I'm looking into applying Snapshot Isolation Multiversion concurrency control (SI MVCC) on the persistent B+ tree.
The first issue I'm confronted with is that every node in the B+ tree holds a pointer to the next node in the tree; a 64-bit pointer to a byte address inside the file where the next node is located. Therefore, when I update a record node all the nodes in that branch of the B+ tree all the way to the root node has to be updated - is there a better/simpler way of doing this to avoid so many disk updates (typically 4 'disk sectors'/nodes has to be updated at every record write, each node is fit inside a single disk sector)? A seperate directory record that holds an overview of all the linked nodes perhaps?