IP Library Granted Patent US 9,514,149
Granted Patent B2
US 9,514,149 · App. 15/077,273 · Granted Dec 6, 2016

Hierarchical data compression and computation

Inventors: William B. Ackerman (North Billerica, MA); Garth A. Dickie (Framingham, MA); Jeffrey M. Keller (Cambridge, MA)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F17/30153G06F17/30371G06F17/30498G06F17/30867H03M7/3088H03M7/46H03M7/6011H03M7/6035
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 9,514,149
App. No.
15/077,273
Granted
Dec 6, 2016
Kind
B2
Abstract

According to embodiments of the present invention, machines, systems, methods and computer program products for hierarchical compression of data are presented comprising creating a compression hierarchy of compression nodes, wherein each compression node is associated with a compression operation to produce compressed data. An output of any of the compression nodes may be compressed by another compression node or the same compression node. A path of one or more compression nodes is determined through said compression hierarchy based upon compression statistics to compress data, and the data is compressed by the compression nodes of the path. Various computational techniques are presented herein for manipulating the compression hierarchy to defer or reduce computation during query evaluation.

Claims (60)

1. A method of hierarchical compression comprising:

creating a compression hierarchy of compression nodes, wherein each compression node is associated with a compression operation to produce compressed data;

dynamically determining a plurality of different compression operations to form a path through said compression hierarchy, based upon compression statistics, to compress data, wherein the path includes the compression nodes associated with the plurality of different compression operations; and

compressing the data by the compression nodes of the path.

2. The method of claim 1 , further comprising selecting a path of the compression hierarchy having a measure of compression higher than any of the other paths.

3. The method of claim 1 , wherein the compression nodes are configured to compress one or more data types selected from a group consisting of: integer, character and double.

4. The method of claim 1 , wherein each compression node is selected from a group consisting of: a bitshaved compression node, a dictionary compression node, a run length encoding compression node, a character-based compression node and a delta compression node.

5. The method of claim 1 , wherein creating the compression hierarchy of compression nodes comprises:

creating a run length encoding compression node in the compression hierarchy; and

wherein compressing the data comprises:

performing a filtering operation on the data using the run length encoding compression node, wherein the filtering operation is performed in part by applying a bitmask to a values field of the run length encoding compression node.

6. The method of claim 1 , wherein creating the compression hierarchy of compression nodes comprises:

creating a run length encoding compression node in the compression hierarchy; and

wherein compressing the data comprises:

performing part of a join operation on the data using the run length encoding compression node, wherein the join operation is performed by applying input data to a values field of the run length encoding compression node and by applying repeat counts to a lengths field of the run length encoding compression node.

7. The method of claim 1 , wherein creating the compression hierarchy of compression nodes comprises:

creating a dictionary compression node in the compression hierarchy; and

wherein compressing the data comprises:

performing a computation on the data using the dictionary compression node, wherein the computation is performed by applying bitshaved data to the dictionary compression node to generate a dictionary having values and keys; and

performing the computation for each generated value.

8. A system for hierarchically compressing data comprising:

one or more processors configured to:

create a compression hierarchy of compression nodes, wherein each compression node is associated with a compression operation to produce compressed data;

dynamically determine a plurality of different compression operations to form a path through said compression hierarchy, based upon compression statistics, to compress data, wherein the path includes the compression nodes associated with the plurality of different compression operations; and

compress the data by the compression nodes of the path.

9. The system of claim 8 , wherein the one or more processors are configured to select a path of the compression hierarchy having a measure of compression higher than any of the other paths.

10. The system of claim 8 , wherein the compression nodes are configured to compress one or more data types selected from a group consisting of: integer, character and double.

11. The system of claim 8 , wherein each compression node is selected from a group consisting of: a bitshaved compression node, a dictionary compression node, a run length encoding compression node, a character-based compression node and a delta compression node.

12. The system of claim 8 , wherein creating the compression hierarchy of compression nodes comprises:

creating a run length encoding compression node in the compression hierarchy of compression nodes; and

wherein compressing the data comprises:

performing a filtering operation on the data using the run length encoding compression node, wherein the filtering operation is performed in part by applying a bitmask to a values field of the run length encoding compression node.

13. The system of claim 8 , wherein creating the compression hierarchy of compression nodes comprises:

creating a run length encoding compression node in the compression hierarchy of compression nodes; and

wherein compressing the data comprises:

performing part of a join operation on the data using the run length encoding compression node, wherein the join operation is performed by applying input data to a values field of the run length encoding compression node and by applying repeat counts to a lengths field of the run length encoding compression node.

14. The system of claim 8 , wherein creating the compression hierarchy of compression nodes comprises:

creating a dictionary compression node in the compression hierarchy of compression nodes;

and wherein compressing the data comprises:

performing a computation on the data using the dictionary compression node, wherein the computation is performed by applying bitshaved data to the dictionary compression node to generate a dictionary having values and keys; and

performing the computation for each generated value.

15. A computer program product for hierarchically compressing data comprising a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code, when executed by a processor, causes the processor to:

create a compression hierarchy of compression nodes, wherein each compression node is associated with a compression operation to produce compressed data;

dynamically determine a plurality of different compression operations to form a path through said compression hierarchy, based upon compression statistics, to compress data, wherein the path includes the compression nodes associated with the plurality of different compression operations; and

compress the data by the compression nodes of the path.

16. The computer program product of claim 15 , wherein the computer readable program code is configured to cause the processor to select a path of the compression hierarchy having a measure of compression higher than any of the other paths.

17. The computer program product of claim 15 , wherein each compression node is selected from a group consisting of: a bitshaved compression node, a dictionary compression node, a run length encoding compression node, a character-based compression node and a delta compression node.

18. The computer program product of claim 15 , wherein creating the compression hierarchy of compression nodes comprises:

creating a run length encoding compression node in the compression hierarchy of compression nodes; and

wherein compressing the data comprises:

performing a filtering operation on the data using the run length encoding compression node, wherein the filtering operation is performed in part by applying a bitmask to a values field of the run length encoding compression node.

19. The computer program product of claim 15 , wherein creating the compression hierarchy of compression nodes comprises:

creating a run length encoding compression node in the compression hierarchy of compression nodes; and

wherein compressing the data comprises:

performing part of a join operation on the data using the run length encoding compression node, wherein the join operation is performed by applying input data to a values field of the run length encoding compression node and by applying repeat counts to a lengths field of the run length encoding compression node.

20. The computer program product of claim 15 , wherein creating the compression hierarchy of compression nodes comprises:

creating a dictionary compression node in the compression hierarchy of compression nodes;

wherein compressing the data comprises:

performing a computation on the data using the dictionary compression node, wherein the computation is performed by applying bitshaved data to the dictionary compression node to generate a dictionary having values and keys; and

performing the computation for each generated value.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 038071 FRAME: 0006. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 28, 2016
From: ACKERMAN, WILLIAM B.; DICKIE, GARTH A.; KELLER, JEFFREY M.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038290/0360 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2016
From: ACKERMAN, WILLIAM B.; DICKIE, GARTH A.; KELLER, JEFFREY M.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038071/0006 →
Continuity (2)
Continuation 14501790 · Sep 30, 2014
Related Publication 20160204799A1 · Jul 14, 2016