IP Library Granted Patent US 11,824,565
Granted Patent B2
US 11,824,565 · App. 17/480,819 · Granted Nov 21, 2023

Data compression for columnar databases into arbitrarily-sized persistent pages

Inventor: Ivan Schreter (Malsch, DE)
Assignee: SAP SE
H03M7/3088G06F16/221H03M7/3077H03M7/4081
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,824,565
App. No.
17/480,819
Granted
Nov 21, 2023
Kind
B2
Abstract

A method for compressing columnar data may include generating, for a data column included in a data chunk, a dictionary enumerating, in a sorted order, a first set of unique values included in the first data column. A compression technique for generated a compressed representation of the data column having a fewest quantity of bytes may be identified based at least on the dictionary. The compression technique including a dictionary compression applying the dictionary and/or another compression technique. A compressed data chunk may be generated by applying the compression technique to compress the data column included in the data chunk. The compressed data chunk may be stored at a database in a variable-size persistent page whose size is allocated based on the size of the compressed representation of the data column. Related systems and articles of manufacture are also provided.

Claims (40)

1. A system, comprising:

at least one data processor; and

at least one memory storing instructions which, when executed by the at least one data processor, cause operations comprising:

generating, for a first data column included in a data chunk, a first dictionary enumerating, in a sorted order, a first set of unique values included in the first data column;

identifying, based at least on the first dictionary, a first compression technique for generating a first compressed representation of the first data column having a fewest quantity of bytes, the first compression technique including a dictionary compression applying the first dictionary and/or another compression technique;

generating a compressed data chunk by at least applying the first compression technique to compress the first data column included in the data chunk; and

storing, in a persistent page at a database, the compressed data chunk.

2. The system of claim 1 , wherein the persistent page is associated with a variable size, and wherein the persistent page is allocated based at least on a size of the first compressed representation of the first data column such that a size of the persistent page corresponds to that of the compressed data chunk.

3. The system of claim 1 , wherein the first compression technique comprises a null-value compression instead of the dictionary compression if the first dictionary includes a single NULL value.

4. The system of claim 1 , wherein the first compression technique comprises a single-value compression instead of the dictionary compression if the first dictionary includes a single non-NULL value.

5. The system of claim 1 , wherein the first compression technique comprises the dictionary compression if the first dictionary includes multiple non-NULL values and a first size of the first data column is greater than a second size of the first dictionary and a data vector generated by replacing each value in the first data column with a corresponding index value from the first dictionary.

6. The system of claim 1 , wherein the first compression technique comprises a prefix/suffix compression instead of or in addition to the dictionary compression if the first dictionary includes more than a threshold quantity of unique values with prefixes and/or suffixes.

7. The system of claim 1 , wherein the first compression technique comprises a run-length encoding instead of or in addition to the dictionary compression if the first data column includes less than a threshold quantity of runs of a same value and/or the first dictionary is less than a threshold size.

8. The system of claim 1 , wherein the first compression technique comprises a frame of reference compression instead of or in addition to the dictionary compression if the first dictionary includes less than a threshold quantity of outlier values relative to a range of values.

9. The system of claim 1 , wherein the database comprises a columnar database.

10. The system of claim 1 , wherein the operations further comprise:

generating, for a second data column included in the data chunk, a second dictionary enumerating, in the sorted order, a second set of unique values included in the second data column;

identifying, based at least on the second dictionary, a second compression technique for generating a second compressed representation of the second data column having the fewest quantity of bytes, the second compression technique including a dictionary compression applying the second dictionary and/or another compression technique; and

generating the compressed data chunk including by applying the second compression technique to compress the second data column included in the data chunk.

11. A computer-implemented method, comprising:

generating, for a first data column included in a data chunk, a first dictionary enumerating, in a sorted order, a first set of unique values included in the first data column;

identifying, based at least on the first dictionary, a first compression technique for generating a first compressed representation of the first data column having a fewest quantity of bytes, the first compression technique including a dictionary compression applying the first dictionary and/or another compression technique;

generating a compressed data chunk by at least applying the first compression technique to compress the first data column included in the data chunk; and

storing, in a persistent page at a database, the compressed data chunk.

12. The method of claim 11 , wherein the persistent page is associated with a variable size, and wherein the persistent page is allocated based at least on a size of the first compressed representation of the first data column such that a size of the persistent page corresponds to that of the compressed data chunk.

13. The method of claim 11 , wherein the first compression technique comprises a null-value compression instead of the dictionary compression if the first dictionary includes a single NULL value.

14. The method of claim 11 , wherein the first compression technique comprises a single-value compression instead of the dictionary compression if the first dictionary includes a single non-NULL value.

15. The method of claim 11 , wherein the first compression technique comprises the dictionary compression if the first dictionary includes multiple non-NULL values and a first size of the first data column is greater than a second size of the first dictionary and a data vector generated by replacing each value in the first data column with a corresponding index value from the first dictionary.

16. The method of claim 11 , wherein the first compression technique comprises a prefix/suffix compression instead of or in addition to the dictionary compression if the first dictionary includes more than a threshold quantity of unique values with prefixes and/or suffixes.

17. The method of claim 11 , wherein the first compression technique comprises a run-length encoding instead of or in addition to the dictionary compression if the first data column includes less than a threshold quantity of runs of a same value and/or the first dictionary is less than a threshold size.

18. The method of claim 11 , wherein the first compression technique comprises a frame of reference compression instead of or in addition to the dictionary compression if the first dictionary includes less than a threshold quantity of outlier values relative to a range of values.

19. The method of claim 11 , further comprising:

generating, for a second data column included in the data chunk, a second dictionary enumerating, in the sorted order, a second set of unique values included in the second data column;

identifying, based at least on the second dictionary, a second compression technique for generating a second compressed representation of the second data column having the fewest quantity of bytes, the second compression technique including a dictionary compression applying the second dictionary and/or another compression technique; and

generating the compressed data chunk including by applying the second compression technique to compress the second data column included in the data chunk.

20. A non-transitory computer readable medium storing instructions, which when executed by at least one data processor, result in operations comprising:

generating, for a first data column included in a data chunk, a first dictionary enumerating, in a sorted order, a first set of unique values included in the first data column;

identifying, based at least on the first dictionary, a first compression technique for generating a first compressed representation of the first data column having a fewest quantity of bytes, the first compression technique including a dictionary compression applying the first dictionary and/or another compression technique;

generating a compressed data chunk by at least applying the first compression technique to compress the first data column included in the data chunk; and

storing, in a persistent page at a database, the compressed data chunk.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2021
From: SCHRETER, IVAN
To: SAP SE
Reel/Frame 057551/0606 →
Continuity (1)
Related Publication 20230089082A1 · Mar 23, 2023