Block Re-Pair Front Coding for Faster Database Decompression

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current database compression methods, such as Re-Pair Front Coding (RPFC), face challenges with high compression times and memory consumption, especially when dealing with large string dictionaries, making them impractical for multi-terabyte in-memory database systems.

Innovation Solution

The proposed solution is a block re-pair front coding (BRPFC) method that splits the dictionary into blocks, applies front coding, and then uses Re-Pair compression on each block individually, optimizing compression times and memory usage by limiting the number of symbols and using vectorized operations for decompression.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of substance

If Re-Pair compression is applied to the entire string dictionary, then compression ratio is improved, but compression time and memory consumption increase significantly

Engineering Contradiction:
Improvecompression ratioVSAvoidcompression time
Core Design Contradiction:
Loss of substanceVSLoss of time

Solution Approach 1:

The string dictionary is divided into multiple blocks, where each block contains a subset of the dictionary strings. Re-Pair compression is applied independently to each block rather than the entire dictionary at once. This segmentation reduces the computational complexity and memory requirements while maintaining overall compression effectiveness.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a hierarchical block structure dimension, organizing the dictionary into blocks of blocks. This multi-dimensional organization allows parallel processing of blocks and reduces the linear time complexity associated with processing the entire dictionary as a single unit.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Loss of substance

If Re-Pair compression is applied to the entire string dictionary, then compression ratio is improved, but memory consumption increases

Engineering Contradiction:
Improvecompression ratioVSAvoidmemory consumption
Core Design Contradiction:
Loss of substanceVSQuantity of substance

Solution Approach 1:

By segmenting the dictionary into blocks, the patent reduces the memory footprint required for Re-Pair compression. Each block can be processed independently with its own compressed representation, avoiding the need to load the entire dictionary into memory simultaneously. This enables processing of large dictionaries that would otherwise exceed available memory resources.

Inventive Principle:
Principle #1Segmentation

3Loss of substance

If front coding is applied to compress strings, then compression is achieved, but decompression speed decreases due to complex processing

Engineering Contradiction:
ImprovecompressionVSAvoiddecompression speed
Core Design Contradiction:
Loss of substanceVSSpeed

Solution Approach 1:

The patent applies front coding during the compression phase to pre-process and simplify the string representations. By performing the computationally intensive front coding operations during compression rather than decompression, the patent achieves good compression ratios while keeping decompression operations simpler and faster.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS12261628B2Advanced database decompression
Publication Date: 2025.03.25 SAP SE
  • US12261628B2 patent drawing
  • US12261628B2 patent drawing
  • US12261628B2 patent drawing

AI summary

A method, a system, and a computer program product for decompressing data. One or more compressed blocks in a set of stored compressed blocks responsive to a request to access data in the set of stored compressed blocks are identified. String prefixes inside the identified compressed blocks are decompressed using front coding. String suffixes inside the identified compressed blocks are decompressed using a re-pair decompression. Uncompressed data is generated.