Radix Tree Compression via Prefix Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Radix trees face memory inefficiencies due to the need to store keys of varying lengths, leading to performance issues during traversal and compression, especially when keys are long, as existing methods of memory allocation do not effectively minimize memory usage per container.

Innovation Solution

A method and system for compressing a radix tree by traversing its containers, identifying parent containers with child containers having unique prefixes, and removing the remainder sequences from these child containers, storing the unique prefixes and remainder sequences in auxiliary data structures to reduce memory usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If all key sequences are stored in each container, then key integrity is maintained, but memory consumption increases

Engineering Contradiction:
Improvekey integrityVSAvoidmemory consumption
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The key sequence in each container is segmented into two parts: a unique prefix that is stored in the container, and a remainder sequence that is removed from the container. This segmentation allows the container to store only the necessary unique identifying portion of the key, while the full key can be reconstructed when needed, thereby reducing memory consumption while maintaining key integrity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The remainder sequence is extracted and removed from the container, keeping only the unique prefix. This extraction principle directly reduces the amount of data stored in each container while preserving the essential identifying information needed for radix tree operations.

Inventive Principle:
Principle #2Taking out (Extraction)

2Quantity of substance

If memory allocation is optimized for long keys, then memory efficiency improves, but traversal performance degrades

Engineering Contradiction:
Improvememory efficiencyVSAvoidtraversal performance
Core Design Contradiction:
Quantity of substanceVSSpeed

Solution Approach 1:

The unique prefix is identified and stored in the container during the offline compression phase, before traversal operations occur. This preliminary action ensures that the container is pre-configured with the optimized data structure that balances memory efficiency with traversal performance, as the prefix length is determined based on the specific key sequences in the dataset.

Inventive Principle:
Principle #10Preliminary action

3Quantity of substance

If compression is applied to reduce memory usage, then memory consumption decreases, but device complexity increases

Engineering Contradiction:
Improvememory usageVSAvoiddata structure complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The radix tree container performs self-service by storing its own unique prefix directly within its structure. This eliminates the need for external auxiliary data structures to store key information, as each container is self-sufficient with the prefix it needs to identify its associated keys, thereby reducing overall system complexity while achieving compression.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9442927B2Offline generation of compressed radix tree with key sequence skip
Publication Date: 2016.09.13 RED HAT ISRAEL
  • US9442927B2 patent drawing
  • US9442927B2 patent drawing
  • US9442927B2 patent drawing

AI summary

Systems and methods are disclosed for compressing a radix tree. An example method includes traversing a radix tree including a plurality of containers. The method also includes identifying, based on the traversing, a parent container having a plurality of child containers, each child container including a sequence of elements. The method further includes for one or more child containers of the plurality of child containers, identifying a unique prefix of the sequence of elements included in the respective child container, identifying a remainder sequence after the unique prefix in the sequence of elements, and removing the remainder sequence from the respective child container.