IP Library Granted Patent US 11,086,852
Granted Patent B2
US 11,086,852 · App. 16/455,661 · Granted Aug 10, 2021

Hardware-assisted multi-table database with shared memory footprint

Inventors: David Brief (Modiin, IL); Yoav Markus (Tel Aviv, IL); Yuval Grossman (Kiryat Ono, IL)
Assignee: Western Digital Technologies, Inc.
G06F16/2379G06F16/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 11,086,852
App. No.
16/455,661
Granted
Aug 10, 2021
Kind
B2
Abstract

Disclosed are systems and methods for providing an improved hardware-assisted multi-table database with reduced memory footprint. A method includes receiving a request to perform an operation on a selected logical table of a plurality of logical database tables. The method also includes accessing a data structure comprising a plurality of records each including: a logical table identifier corresponding to one of the plurality of logical database tables, wherein the logical table identifier is accessed from a register, and at least one sort key. The method also includes performing the operation using one or more sort criteria, wherein the one or more sort criteria are maintained for the selected logical table using the at least one sort key of the plurality of records corresponding to the selected logical table. The method also includes updating the data structure to reflect the performed operation.

Claims (93)

1. A machine-implemented method for providing a hardware-assisted multi-table database with shared memory footprint, the method comprising:

receiving a request to perform an operation with respect to a selected logical table of a plurality of logical database tables;

accessing a data structure comprising a first plurality of records each storing:

a logical table identifier value corresponding to one of the plurality of logical database tables, wherein the logical table identifier value is accessed from a register; and

at least one sort key value assigned to a respective logical table identifier value;

performing the operation using one or more sort criteria values, wherein the one or more sort criteria values are maintained for the selected logical table using the at least one sort key value of the first plurality of records corresponding to the selected logical table; and

updating the data structure to reflect the performed operation,

wherein:

the plurality of logical database tables correspond to multiple databases;

the data structure is different from the plurality of logical database tables;

the first plurality of records are different from the plurality of logical database tables;

a second plurality of records store the one or more sort criteria values;

the second plurality of records are different from the first plurality of records;

the one or more sort criteria values in the second plurality of records are determined from the at least one sort key value in the first plurality of records;

the one or more sort criteria values in the second plurality of records are different from the at least one sort key value in the first plurality of records;

the one or more sort criteria values in the second plurality of records comprise one or more of record identifier values;

each record in the first plurality of records is identified by a respective record identifier value;

the record identifier values are sequential; and

the first plurality of records are indexed by the record identifier values.

2. The method of claim 1 , wherein the at least one sort key value is accessed in a memory.

3. The method of claim 2 , wherein the first plurality of records each includes extra metadata accessed in the memory.

4. The method of claim 1 , wherein the first plurality of records are stored in a single shared table.

5. The method of claim 1 , wherein the at least one sort key value comprises different types for at least two of the plurality of logical database tables.

6. The method of claim 1 , wherein performing the operation accesses a target record of the first plurality of records using the one or more sort criteria values.

7. The method of claim 6 , wherein performing the operation does not perform a scan of the data structure.

8. The method of claim 6 , wherein the operation comprises popping the target record, and wherein updating the data structure includes setting the logical table identifier value of the target record to a predetermined null value.

9. The method of claim 6 , wherein updating the data structure includes updating the at least one sort key value of the target record.

10. The method of claim 1 , wherein the one or more sort criteria values identify, based on the at least one sort key value, at least one of: a maximum record, a minimum record, a least frequently used record, or a least recently used record.

11. The method of claim 1 , wherein the operation comprises pushing a new record into the first plurality of records according to a stack pointer, and wherein updating the data structure comprises updating the stack pointer.

12. The method of claim 1 , wherein:

updating the data structure is a blocking operating; and

no other database operations are performed until the updating the data structure is completed.

13. A data storage device, comprising:

registers; and

a controller configured to:

receive a request to perform an operation with respect to a determined table among a plurality of database tables;

access a data structure comprising a first plurality of records each storing:

a table identifier value corresponding to one of the plurality of database tables, wherein the table identifier value is stored in the registers; and

at least one sort key value; and

perform the operation using one or more sort criteria values, wherein the one or more sort criteria values are maintained for the determined table using the at least one sort key value of the first plurality of records corresponding to the determined table, wherein:

the plurality of database tables correspond to multiple databases;

the data structure is different from the plurality of database tables;

the first plurality of records are different from the plurality of database tables;

a second plurality of records store the one or more sort criteria values;

the second plurality of records are different from the first plurality of records;

the one or more sort criteria values in the second plurality of records are determined from the at least one sort key value in the first plurality of records;

the one or more sort criteria values in the second plurality of records are different from the at least one sort key value in the first plurality of records;

the one or more sort criteria values in the second plurality of records comprise one or more of record identifier values;

each record in the first plurality of records is identified by a respective record identifier value;

the record identifier values are sequential; and

the first plurality of records are indexed by the record identifier values.

14. The data storage device of claim 13 , wherein the controller is further configured to update the data structure to reflect the performed operation.

15. The data storage device of claim 13 , further comprising a memory, and wherein the controller is configured to access the at least one sort key value in the memory.

16. The data storage device of claim 13 , wherein the controller is configured to perform the operation by accessing a target record of the first plurality of records using the one or more sort criteria values and without scanning the data structure.

17. The data storage device of claim 13 , wherein the controller is configured to maintain the one or more sort criteria values to identify, based on the at least one sort key value, at least one of: a maximum record, a minimum record, a least frequently used record, or a least recently used record.

18. A non-transitory machine-readable medium including machine-executable instructions thereon that, when executed by a processor, perform a method comprising:

receiving a request to perform an operation with respect to a selected logical table of a plurality of logical database tables;

accessing a data structure comprising a first plurality of records each storing:

a logical table identifier value corresponding to one of the plurality of logical database tables, wherein the logical table identifier value is accessed from a register; and

at least one sort key value;

performing the operation using one or more sort criteria values, wherein the one or more sort criteria values are maintained for the selected logical table using the at least one sort key value of the first plurality of records corresponding to the selected logical table, wherein the one or more sort criteria values identify, based on the at least one sort key value, at least one of: a maximum record, a minimum record, a least frequently used record, or a least recently used record; and

updating the data structure to reflect the performed operation,

wherein:

the plurality of logical database tables correspond to multiple databases;

the data structure is different from the plurality of logical database tables;

the first plurality of records are different from the plurality of logical database tables;

a second plurality of records store the one or more sort criteria values;

the second plurality of records are different from the first plurality of records;

the one or more sort criteria values in the second plurality of records are determined from the at least one sort key value in the first plurality of records;

the one or more sort criteria values in the second plurality of records are different from the at least one sort key value in the first plurality of records;

the one or more sort criteria values in the second plurality of records comprise one or more of record identifier values;

each record in the first plurality of records is identified by a respective record identifier value;

the record identifier values are sequential; and

the first plurality of records are indexed by the record identifier values.

19. The non-transitory machine-readable medium of claim 18 , wherein performing the operation accesses a target record of the first plurality of records using the one or more sort criteria values, and wherein updating the data structure includes updating the at least one sort key value of the target record.

20. A system, comprising:

a hardware processor configured to receive a request to perform an operation with respect to a selected logical table of a plurality of logical database tables,

wherein the hardware processor is configured to access a data structure comprising a first plurality of records each storing:

a logical table identifier value corresponding to one of the plurality of logical database tables, wherein the logical table identifier value is accessed from a register; and

at least one sort key value;

wherein the hardware processor is configured to perform the operation using one or more sort criteria values, wherein the one or more sort criteria values are maintained for the selected logical table using the at least one sort key value of the first plurality of records corresponding to the selected logical table; and

wherein:

the plurality of logical database tables correspond to multiple databases;

the data structure is different from the plurality of logical database tables;

the first plurality of records are different from the plurality of logical database tables;

a second plurality of records store the one or more sort criteria values;

the second plurality of records are different from the first plurality of records;

the one or more sort criteria values in the second plurality of records are determined from the at least one sort key value in the first plurality of records;

the one or more sort criteria values in the second plurality of records are different from the at least one sort key value in the first plurality of records;

the one or more sort criteria values in the second plurality of records comprise one or more of record identifier values;

each record in the first plurality of records is identified by a respective record identifier value;

the record identifier values are sequential; and

the first plurality of records are indexed by the record identifier values.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2019
From: BRIEF, DAVID; MARKUS, YOAV; GROSSMAN, YUVAL
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 049657/0468 →