Vectored Multi-Version B+Tree for NVM Write Amplification
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Persisting data structures on nonvolatile memory (NVM) faces challenges such as maintaining application write order, reverting partial updates, and optimizing write and read latency due to issues like cache eviction and write amplification in existing B+Tree data storage structures.
Innovation Solution
A vectored multi-version B+Tree data storage structure is used, where updates to the same key are inserted vertically and unique keys cause horizontal growth, reducing write amplification and allowing data to be persisted in native form without transformation, using cache-line flush and store fence instructions for durability and consistency.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of manufacture
If a B+Tree data storage structure is used on NVM, then data can be persisted in native form without transformation, but write amplification occurs due to ongoing sorting requiring right shifts and additional CLFLUSH instructions
Solution Approach 1:
The B+Tree structure is segmented into fixed-width slots within nodes, where each slot has a predetermined position. This segmentation eliminates the need for dynamic sorting and right-shift operations during writes, as values are directly placed into appropriate slots based on key comparison, reducing write amplification and improving write speed while maintaining native form persistence
Solution Approach 2:
The data structure is pre-organized with fixed-width slots and predetermined positions before writes occur. This preliminary structuring allows direct insertion without subsequent sorting operations, eliminating the need for right-shifts and reducing the number of CLFLUSH instructions required, thereby improving productivity while maintaining ease of manufacture
2Reliability
If cache-line flush and store fence instructions are used to maintain application write order, then data consistency is achieved, but write latency increases
Solution Approach 1:
Instead of flushing entire cache lines for every write operation, the patent applies cache-line flush and store fence instructions selectively only when necessary to maintain consistency. This partial application reduces the overhead and latency associated with these instructions while still achieving the required data consistency, balancing reliability with time efficiency
3Reliability
If multi-version data structures are used to revert partial updates, then log-less durability is achieved, but device complexity increases
Solution Approach 1:
The multi-version data structure is segmented into fixed-width slots with predetermined positions, where each slot stores a specific version of the data. This segmentation simplifies the management of multiple versions by providing a structured, predictable layout that reduces the complexity of tracking and reverting partial updates, achieving log-less durability with reduced device complexity
4Productivity
If fixed-width slots with predetermined positions are used in B+Tree nodes, then write amplification is reduced, but flexibility in handling variable-length values is limited
Solution Approach 1:
The patent employs fixed-width slots with predetermined positions in B+Tree nodes, where each slot is designed to accommodate values of specific widths. This parameter-based approach allows the data structure to handle variable-length values by selecting appropriate fixed-width slots, maintaining write speed and reducing write amplification while preserving adaptability through parameter variation
Data Source
Figure 1
Figure 2
Figure 3
AI summary
A storage management computing device, method and non-transitory computer readable medium that persist data on non-volatile memory includes maintaining a data storage structure comprising multiple nodes on non-volatile memory in at least one storage server. A determination is made when a received key in an update matches an existing key in one of the multiple nodes in the data storage structure. When the determination indicates the match, the update is provided for insertion in a slot in a vector extending from the existing key in the one of the multiple nodes for the data storage structure which matches the received key.