Write-Optimized Nested Trees with Dynamic Node Sizing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional Bε-trees face inefficiencies in space utilization and performance due to fixed node sizes and pre-allocation of disk blocks, leading to fragmentation and increased I/O costs, especially during fluctuating workloads between write-heavy and read-heavy operations.

Innovation Solution

Implementing a variant of the B+-tree data structure within the Bε-tree index that allows dynamic node size adjustment based on workload, using a B+-tree with a buffer that can grow or shrink as needed, and employing a Bloom filter for efficient key-value pair indexing to reduce I/O costs and prevent fragmentation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If fixed node sizes and pre-allocation of disk blocks are used in conventional Bε-trees, then space pre-allocation is simplified, but storage efficiency deteriorates due to fragmentation and sparse trees

Engineering Contradiction:
Improvespace pre-allocation simplicityVSAvoidstorage efficiency
Core Design Contradiction:
Ease of manufactureVSLoss of substance

Solution Approach 1:

The patent applies dynamics by making node sizes variable rather than fixed. Nodes in the Bε-tree can dynamically adjust their size based on the amount of data they contain and workload characteristics. This allows the tree structure to adapt to changing data patterns, improving storage efficiency by eliminating the waste of pre-allocated but unused space while maintaining the simplicity of space management through automated size adjustment.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the parameter of node size from a fixed constant to a variable parameter that can be adjusted based on data volume and access patterns. This parameter change enables the system to optimize storage efficiency by matching node sizes to actual data requirements, reducing fragmentation and eliminating sparse tree structures while maintaining ease of space allocation through systematic parameter adjustment.

Inventive Principle:
Principle #35Parameter changes

2Device complexity

If fixed node sizes are used in conventional Bε-trees, then device complexity is reduced, but performance deteriorates during fluctuating workloads between write-heavy and read-heavy operations

Engineering Contradiction:
Improvenode size management complexityVSAvoidoperation performance
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent applies dynamics by enabling nodes to transition between different size states based on workload characteristics. During write-heavy operations, nodes can expand to accommodate incoming data efficiently, while during read-heavy operations, nodes can be optimized for faster access. This dynamic adaptation improves performance across varying workload conditions without requiring complex manual intervention, as the system automatically adjusts node characteristics based on observed patterns.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent implements feedback mechanisms that monitor workload patterns and use this information to adjust node sizes and tree structure. The system observes whether operations are write-heavy or read-heavy and automatically tunes the Bε-tree parameters accordingly. This feedback loop enables the system to maintain optimal performance for the current workload type while keeping the overall system relatively simple through automated control rather than complex manual configuration.

Inventive Principle:
Principle #23Feedback

3Ease of operation

If pre-allocation of disk blocks is performed, then space management is simplified, but I/O costs increase due to fragmentation and sparse tree structures

Engineering Contradiction:
Improvespace management easeVSAvoidI/O cost
Core Design Contradiction:
Ease of operationVSLoss of energy

Solution Approach 1:

The patent applies dynamics by allowing the tree structure to adapt its density and node occupancy based on actual data insertion patterns. Instead of pre-allocating fixed blocks that may remain empty, the system dynamically allocates space as needed, ensuring that disk blocks are fully utilized when written to. This reduces the number of partial I/O operations and eliminates the need to traverse sparse tree structures, thereby reducing I/O costs while maintaining simple space management through on-demand allocation.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent converts the potential harm of dynamic space allocation complexity into benefit by implementing automated node size adjustment that eliminates fragmentation. The system allows nodes to grow and shrink as needed, which initially might seem to complicate space management, but this flexibility actually prevents fragmentation by ensuring optimal packing of data. The result is reduced I/O costs because the tree structure remains dense and compact, and space management remains simple through automated control.

Inventive Principle:
Principle #22Blessing in disguise (Convert harm into benefit)

Data Source

PatentUS10649959B2Write-optimized nested trees
Publication Date: 2020.05.12 VMWARE INC
  • US10649959B2 patent drawing
  • US10649959B2 patent drawing
  • US10649959B2 patent drawing

AI summary

A Bε-tree associated with a file system on a storage volume includes a hierarchy of nodes. Each node includes a buffer portion that can be characterized by a fixed maximum allowable size to store key-value pairs as messages in the buffer. Messages can be initially buffered in the root node of the Bε-tree, and flushed to descendent children from the root node. Messages stored in the buffers can be indexed using a B+-tree data structure. As the B+-tree data structure in a buffer grows (due to receiving flushed messages) and shrinks (due to messages being flushed), disk blocks can be allocated from the storage volume to increase the actual size of the buffer and deallocated from the buffer to reduce the actual size of the buffer.