IP Library Granted Patent US 12,038,922
Granted Patent B2
US 12,038,922 · App. 17/503,320 · Granted Jul 16, 2024

Pipelined hardware-implemented database query processing

Inventors: Rafi Shalom (Petah Tikva, IL); Kobby Carmona (Hod Hasharon, IL)
Assignee: SPEEDATA LTD.
G06F16/24537G06F16/2282
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 12,038,922
App. No.
17/503,320
Granted
Jul 16, 2024
Kind
B2
Abstract

An apparatus for applying database commands to one or more database tables includes a memory and a hardware-implemented pipeline. The hardware-implemented pipeline includes one or more table-processing circuits, and is configured to receive a stream of input records drawn from the one or more database tables, to parse first records, from among the input records, into a key and one or more fields other than the key, to store at least parts of the first records in the memory so as to be accessible using the key, and to apply a database command by matching at least parts of second records from among the input records to the at least parts of the first records stored in the memory, in accordance with the key.

Claims (69)

1. An apparatus for applying database commands to one or more database tables, the apparatus comprising:

a memory; and

a hardware-implemented pipeline comprising one or more table-processing circuits, at least one of the table-processing circuits in the pipeline being configured to perform a database Group-by command, which groups at least parts of matching records, by:

receiving a stream of input records derived from the one or more database tables;

parsing the input records into a key and one or more fields other than the key;

calculating a signature of the key of each input record;

performing an aggregation phase that groups matching records in the memory, including, for each input record:

checking whether the memory already holds a matching entry, having a key that matches the key of the input record;

when the memory does not already hold a matching entry, creating a new entry in the memory, and storing in the new entry at least part of the input record; and

when the memory already holds a matching entry, updating the matching entry in the memory to account for the input record; and

performing an output phase, subsequent to the aggregation phase, that outputs the grouped records.

2. The apparatus according to claim 1 , wherein the at least one of the table-processing circuits is configured to update the matching entry atomically.

3. The apparatus according to claim 1 , wherein the at least one of the table-processing circuits is configured to apply the Group-by command by scanning the one or more database tables in a first order, and updating matching entries in the memory in a second order that is not constrained to follow the first order.

4. The apparatus according to claim 1 , wherein, for each input record, the at least one of the table-processing circuits is configured to store at least part of the signature in the memory in addition to the at least part of the input record.

5. The apparatus according to claim 4 , wherein the at least one of the table-processing circuits is configured to check whether the memory already holds a matching entry by:

reading from the memory a first signature of the key of a stored record, and matching the read first signature to a second signature of the key of a given input record; and

only upon a match between the second signature and the first signature, reading the key of the stored record from the memory and matching the read key to the key of the given input record.

6. The apparatus according to claim 1 , wherein, for each input record, the at least one of the table-processing circuits is configured to calculate a substantially error-free hash over the key of the first record, to store the substantially error-free hash in the memory in addition to the at least part of the input record, and to check whether the memory already holds a matching entry by matching the substantially error-free hash of one or more stored records to the substantially error free hash of the input record.

7. The apparatus according to claim 6 , wherein the at least one of the table-processing circuits is configured to store both the substantially error-free hash and the key in the memory.

8. The apparatus according to claim 6 , wherein the at least one of the table-processing circuits is configured to store the substantially error-free hash, but not the key, in the memory.

9. The apparatus according to claim 1 , wherein, for each input record, the at least one of the table-processing circuits is configured to calculate a hash over the key of the input record, and to store the at least part of the input record in the memory so as to be accessible according to a combination of both the hash and the key.

10. The apparatus according to claim 9 , wherein, in checking whether the memory already holds a matching entry, the at least one of the table-processing circuits is configured to access the memory by the hash, and then to identify, from among at least parts of one or more stored records that match the hash, at least stored record that also matches the key.

11. The apparatus according to claim 1 , and comprising a controller, which is configured to execute the database Group-by command by streaming the input records via the pipeline in two or more phases, and reconfiguring at least one of the table-processing circuits in the pipeline between successive phases.

12. The apparatus according to claim 1 , wherein at least one of the table-processing circuits comprises a Coarse-Grain Reconfigurable Array (CGRA) processor.

13. The apparatus according to claim 1 , and comprising a controller, which is configured to allocate resources of the memory dynamically to the table-processing circuits.

14. The apparatus according to claim 1 , wherein at least two of the input records, or at least two of the keys, differ in size from one another.

15. The apparatus according to claim 1 , wherein at least one of the table-processing circuits is configured to access the memory via an indirection table that is accessed by a hash value calculated over the key.

16. The apparatus according to claim 1 , wherein two or more of the table-processing circuits are configured to access a same memory.

17. The apparatus according to claim 1 , wherein a given table-processing circuit is configured to divide one of the database tables into multiple buckets based on the key, and to apply the database Group-by command separately to each of the buckets.

18. The apparatus according to claim 1 , wherein a given table-processing circuit comprises a Processing Engine (PE) and a Lookup Engine (LE).

19. The apparatus according to claim 18 , wherein the PE is configured to pre-process data before providing the data to the LE, or to post-process data produced by the LE.

20. The apparatus according to claim 1 , wherein the table-processing circuits comprise a Processing Engine (PE) that is configured to selectably receive inputs or outputs from two or more Lookup Engines (LEs).

21. The apparatus according to claim 1 , wherein the table-processing circuits are configured to apply the database Group-by command such that a given table-processing circuit processes each of the input records no more than once.

22. A method for applying database commands to one or more database tables, the method comprising:

receiving a stream of input records, derived from the one or more database tables, in a hardware-implemented pipeline comprising one or more table-processing circuits; and

using at least one of the table-processing circuits in the hardware-implemented pipeline, performing a database Group-by command, which groups at least parts of matching records, by:

parsing the input records, into a key and one or more fields other than the key;

calculating a signature of the key of each input record;

performing an aggregation phase that groups matching records in the memory, including, for each input record:

checking whether the memory already holds a matching entry, having a key that matches the key of the input record;

when the memory does not already hold a matching entry, creating a new entry in the memory, and storing in the new entry at least part of the input record; and

when the memory already holds a matching entry, updating the matching entry in the memory to account for the input record; and

performing an output phase, subsequent to the aggregation phase, that outputs the grouped records.

23. The method according to claim 22 , and comprising, for each input record, storing at least part of the signature in the memory in addition to the at least part of the input record.

24. The method according to claim 22 , and comprising, for each input record, calculating a substantially error-free hash over the key of the input record, storing the substantially error-free hash in the memory in addition to the at least part of the input record, and checking whether the memory already holds a matching entry by matching the substantially error-free hash of one or more stored records to the substantially error free hash of the input records.

25. The method according to claim 22 , and comprising, for each input record, calculating a hash over the key of the input record, and storing the at least part of the input record in the memory so as to be accessible according to a combination of both the hash and the key.

26. The method according to claim 22 , wherein applying the database Group-by command is performed such that a given table-processing circuit processes each of the input records no more than once.

27. An apparatus for applying database commands to one or more database tables, the apparatus comprising:

a memory; and

a hardware-implemented pipeline comprising one or more table-processing circuits, at least one of the table-processing circuits in the pipeline being configured to perform a database Group-by command, which groups at least parts of matching records, by:

receiving a stream of input records derived from the one or more database tables;

parsing the input records into a key and one or more fields other than the key;

calculating a signature of the key of each input record; and

for each input record:

checking whether the memory already holds a matching entry, having a key that matches the key of the input record;

when the memory does not already hold a matching entry, creating a new entry in the memory, and storing in the new entry at least part of the input record; and

when the memory already holds a matching entry, updating the matching entry in the memory to account for the input record,

wherein the at least one of the table-processing circuits is configured to apply the Group-by command by scanning the one or more database tables in a first order, and updating matching entries in the memory in a second order that is not constrained to follow the first order.

28. An apparatus for applying database commands to one or more database tables, the apparatus comprising:

a memory; and

a hardware-implemented pipeline comprising one or more table-processing circuits, at least one of the table-processing circuits in the pipeline being configured to perform a database Group-by command, which groups at least parts of matching records, by:

receiving a stream of input records derived from the one or more database tables;

parsing the input records into a key and one or more fields other than the key;

calculating a signature of the key of each input record; and

for each input record:

checking whether the memory already holds a matching entry, having a key that matches the key of the input record;

when the memory does not already hold a matching entry, creating a new entry in the memory, and storing in the new entry at least part of the input record; and

when the memory already holds a matching entry, updating the matching entry in the memory to account for the input record,

wherein, for each input record, the at least one of the table-processing circuits is configured to calculate a substantially error-free hash over the key of the first record, to store the substantially error-free hash in the memory in addition to the at least part of the input record, and to check whether the memory already holds a matching entry by matching the substantially error-free hash of one or more stored records to the substantially error free hash of the input record.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Jul 3, 2025
From: KREOS CAPITAL VII AGGREGATOR SCSP
To: SPEEDATA LTD
Reel/Frame 071599/0362 →
SECURITY INTEREST Recorded Jul 11, 2023
From: SPEEDATA LTD
To: KREOS CAPITAL VII AGGREGATOR SCSP
Reel/Frame 064205/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2021
From: SHALOM, RAFI; CARMONA, KOBBY
To: SPEEDATA LTD.
Reel/Frame 057817/0834 →
Continuity (1)
Related Publication 20230120492A1 · Apr 20, 2023