IP Library › Granted Patent US 11,238,106
Granted Patent B2
US 11,238,106 · App. 16/415,572 · Granted Feb 1, 2022

Fingerprints for compressed columnar data search

Inventors: Carmen Kwan (Toronto, CA); Reza Sherkat (Waterloo, CA)
Assignee: SAP SE
G06F16/9035G06F16/1847G06F16/221G06F16/90335G06K9/6218H03M7/3059
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,238,106
App. No.
16/415,572
Granted
Feb 1, 2022
Kind
B2
Abstract

The present disclosure involves systems, software, and computer implemented methods for compressed columnar data search using fingerprints. One example method includes compressing columnar data that includes dividing the columnar data into multiple data blocks and generating a fingerprint for each data block, storing the compressed columnar data and the generated fingerprints in an in-memory database, receiving a query for the columnar data, for each in-memory data block stored in the in-memory database, determining whether the in-memory data block satisfies the query and in response to a determination that the in-memory data block does not satisfy the query, pruning the in-memory data block from the multiple data blocks to generate an unpruned set of data blocks, decompressing the unpruned set of data blocks, and performing a query search on the decompressed unpruned set of data blocks for the received query.

Claims (49)

1. A computer-implemented method, comprising:

compressing columnar data to be stored in an in-memory database, including:

dividing the columnar data into a plurality of data blocks; and

in response to dividing the columnar data into the plurality of data blocks, and for each particular data block in the plurality of data blocks, generating a particular fingerprint associated with the particular data block, wherein the particular fingerprint indicates a data range and one or more data gaps of the particular data block, and wherein the particular fingerprint is generated using one of a plurality of predefined fingerprint schemes based on data distribution in the columnar data;

storing the compressed columnar data and the generated fingerprints in the in-memory database;

receiving a query for the columnar data;

for each particular in-memory data block in the plurality of data blocks stored in the in-memory database:

determining whether the particular in-memory data block satisfies the query based on the particular fingerprint associated with the particular in-memory data block and on the data range and the one or more data gaps of the particular in-memory data block indicated by the particular fingerprint; and

in response to a determination that the particular in-memory data block does not satisfy the query, pruning the particular in-memory data block from the plurality of data blocks to generate an unpruned set of data blocks;

decompressing the unpruned set of data blocks; and

performing a query search on the decompressed unpruned set of data blocks for the received query.

2. The computer-implemented method of claim 1 , wherein the plurality of predefined fingerprint schemes includes at least two of a Basic Fingerprint (BF) scheme, a Unilateral Fingerprint (UF) scheme, a Selective Fingerprint (SF) scheme, a Two-Level Fingerprint (TLF) scheme, an Impartial Fingerprint (IF) scheme, and a Heterogeneous Fingerprint (HF) scheme.

3. The computer-implemented method of claim 1 , wherein the query includes a query predicate, and wherein determining whether the particular in-memory data block satisfies the query includes determining whether the particular in-memory data block satisfies the query predicate.

4. The computer-implemented method of claim 3 , wherein the query predicate is a range predicate, and wherein determining whether the particular in-memory data block satisfies the query predicate includes comparing a fingerprint associated with the particular in-memory data block and an encoding of the range predicate using a bitwise AND operation.

5. The computer-implemented method of claim 1 , wherein the determining and pruning are performed on the compressed columnar data and the generated fingerprints stored in the in-memory database.

6. The computer-implemented method of claim 1 , wherein any data block in the unpruned set of data blocks satisfies the query, and wherein decompressing the unpruned set of data blocks includes vectorizing values in the unpruned set of data blocks.

7. A non-transitory computer storage medium encoded with a computer program, the program comprising instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising:

compressing columnar data to be stored in an in-memory database, including:

dividing the columnar data into a plurality of data blocks; and

in response to dividing the columnar data into the plurality of data blocks, for each particular data block in the plurality of data blocks, generating a particular fingerprint associated with the particular data block, wherein the particular fingerprint indicates a data range and one or more data gaps of the particular data block, and wherein the particular fingerprint is generated using one of a plurality of predefined fingerprint schemes based on data distribution in the columnar data;

storing the compressed columnar data and the generated fingerprints in the in-memory database;

receiving a query for the columnar data;

for each particular in-memory data block in the plurality of data blocks stored in the in-memory database:

determining whether the particular in-memory data block satisfies the query based on the particular fingerprint associated with the particular in-memory data block and on the data range and the one or more data gaps of the particular in-memory data block indicated by the particular fingerprint; and

in response to a determination that the particular in-memory data block does not satisfy the query, pruning the particular in-memory data block from the plurality of data blocks to generate an unpruned set of data blocks;

decompressing the unpruned set of data blocks; and

performing a query search on the decompressed unpruned set of data blocks for the received query.

8. The non-transitory computer storage medium of claim 7 , wherein the plurality of predefined fingerprint schemes includes at least two of a Basic Fingerprint (BF) scheme, a Unilateral Fingerprint (UF) scheme, a Selective Fingerprint (SF) scheme, a Two-Level Fingerprint (TLF) scheme, an Impartial Fingerprint (IF) scheme, and a Heterogeneous Fingerprint (HF) scheme.

9. The non-transitory computer storage medium of claim 7 , wherein the query includes a query predicate, and wherein determining whether the particular in-memory data block satisfies the query includes determining whether the particular in-memory data block satisfies the query predicate.

10. The non-transitory computer storage medium of claim 9 , wherein the query predicate is a range predicate, and wherein determining whether the particular in-memory data block satisfies the query predicate includes comparing a fingerprint associated with the particular in-memory data block and an encoding of the range predicate using a bitwise AND operation.

11. The non-transitory computer storage medium of claim 7 , wherein the determining and pruning are performed on the compressed columnar data and the generated fingerprints stored in the in-memory database.

12. The non-transitory computer storage medium of claim 7 , wherein any data block in the unpruned set of data blocks satisfies the query, and wherein decompressing the unpruned set of data blocks includes vectorizing values in the unpruned set of data blocks.

13. A computer-implemented system, comprising:

one or more computers; and

one or more computer memory devices interoperably coupled with the one or more computers and having tangible, non-transitory, machine-readable media storing one or more instructions that, when executed by the one or more computers, perform one or more operations comprising:

compressing columnar data to be stored in an in-memory database, including:

dividing the columnar data into a plurality of data blocks; and

in response to dividing the columnar data into the plurality of data blocks, for each particular data block in the plurality of data blocks, generating a particular fingerprint associated with the particular data block, wherein the particular fingerprint indicates a data range and one or more data gaps of the particular data block, and wherein the particular fingerprint is generated using one of a plurality of predefined fingerprint schemes based on data distribution in the columnar data;

storing the compressed columnar data and the generated fingerprints in the in-memory database;

receiving a query for the columnar data;

for each particular in-memory data block in the plurality of data blocks stored in the in-memory database:

determining whether the particular in-memory data block satisfies the query based on the particular fingerprint associated with the particular in-memory data block and on the data range and the one or more data gaps of the particular in-memory data block indicated by the particular fingerprint; and

in response to a determination that the particular in-memory data block does not satisfy the query, pruning the particular in-memory data block from the plurality of data blocks to generate an unpruned set of data blocks;

decompressing the unpruned set of data blocks; and

performing a query search on the decompressed unpruned set of data blocks for the received query.

14. The computer-implemented system of claim 5 , wherein the plurality of predefined fingerprint schemes includes at least two of a Basic Fingerprint (BF) scheme, a Unilateral Fingerprint (UF) scheme, a Selective Fingerprint (SF) scheme, a Two-Level Fingerprint (TLF) scheme, an Impartial Fingerprint (IF) scheme, and a Heterogeneous Fingerprint (HF) scheme.

15. The computer-implemented system of claim 13 , wherein the query includes a query predicate, and wherein determining whether the particular in-memory data block satisfies the query includes determining whether the particular in-memory data block satisfies the query predicate.

16. The computer-implemented system of claim 15 , wherein the query predicate is a range predicate, and wherein determining whether the particular in-memory data block satisfies the query predicate includes comparing a fingerprint associated with the particular in-memory data block and an encoding of the range predicate using a bitwise AND operation.

17. The computer-implemented system of claim 13 , wherein the determining and pruning are performed on the compressed columnar data and the generated fingerprints stored in the in-memory database.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2019
From: KWAN, CARMEN; SHERKAT, REZA
To: SAP SE
Reel/Frame 049576/0862 →
Continuity (1)
Related Publication 20200364269A1 · Nov 19, 2020
Cited By (1)
US 12,259,859