IP Library › Granted Patent US 11,677,414
Granted Patent B2
US 11,677,414 · App. 17/645,897 · Granted Jun 13, 2023

Fingerprints for compressed columnar data search

Inventors: Carmen Kwan (Toronto, CA); Reza Sherkat (Waterloo, CA)
Assignee: SAP SE
H03M7/30G06F16/1847G06F16/221G06F16/24561G06F16/9035G06F16/90335G06F18/23H03M7/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,677,414
App. No.
17/645,897
Granted
Jun 13, 2023
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 (43)

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;

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

receiving a query for the columnar data, wherein the query includes a query predicate;

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, 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; 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 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.

3. 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.

4. 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.

5. 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;

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

receiving a query for the columnar data, wherein the query includes a query predicate;

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, 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; 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.

6. The non-transitory computer storage medium of claim 5 , 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.

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

8. The non-transitory computer storage medium of claim 5 , 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.

9. 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;

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

receiving a query for the columnar data, wherein the query includes a query predicate;

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, 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; 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.

10. The computer-implemented system 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 computer-implemented system of claim 9 , 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 Dec 23, 2021
From: KWAN, CARMEN; SHERKAT, REZA
To: SAP SE
Reel/Frame 058473/0503 →
Continuity (2)
Continuation 16415572 · May 17, 2019
Related Publication 20220114181A1 · Apr 14, 2022