graph LR
Node_Core["Node Core"]
Node_Item_Operations["Node Item Operations"]
Node_Child_Operations["Node Child Operations"]
Node_Structural_Operations["Node Structural Operations"]
Node_Item_Operations -- "manages" --> Node_Core
Node_Child_Operations -- "manages" --> Node_Core
Node_Structural_Operations -- "modifies" --> Node_Core
Node_Structural_Operations -- "invokes" --> Node_Item_Operations
Node_Structural_Operations -- "invokes" --> Node_Child_Operations
The btree subsystem is built around the Node Core, which represents individual nodes in the B-tree. The Node Item Operations and Node Child Operations components provide the fundamental capabilities for managing the data items and child pointers within these nodes, respectively. The Node Structural Operations component orchestrates more complex, tree-maintaining actions such as node splitting and ensuring copy-on-write semantics. This modular design allows for clear separation of concerns, with specialized components handling specific aspects of node management and tree balancing.
This component represents the fundamental building block of the B-tree—a single node. It encapsulates the ordered collection of Items (key-value pairs) and references to its child nodes. It serves as the foundational element upon which all node operations are performed.
Related Classes/Methods:
btree.node
This component is responsible for managing the collection of Items stored within a B-tree node. It provides the low-level primitives for manipulating these items, ensuring they remain sorted and within the node's capacity.
Related Classes/Methods:
items.insertAtitems.removeAtitems.popitems.truncateitems.find
This component manages the references to child nodes within an internal B-tree node. It provides the necessary operations to insert, remove, and truncate these child pointers, which are crucial for maintaining the tree's hierarchical structure.
Related Classes/Methods:
children.insertAtchildren.removeAtchildren.popchildren.truncate
This component handles the complex structural modifications required for a B-tree node, including ensuring mutability for copy-on-write semantics and performing node splitting when a node becomes overfull. It is vital for maintaining the B-tree's balanced and efficient structure during insertions.
Related Classes/Methods:
node.mutableFornode.mutableChildnode.splitnode.maybeSplitChild