IP Library Granted Patent US 11,640,391
Granted Patent B2
US 11,640,391 · App. 16/923,279 · Granted May 2, 2023

Supporting blockchain collections in a database

Inventors: Juan R. Loaiza (Woodside, CA); Wei-Ming Hu (Palo Alto, CA); Amrish Srivastava (San Ramon, CA); Mahesh Baburao Girkar (Cupertino, CA); James W. Stamos (Saratoga, CA); Sachin Sonawane (Foster City, CA)
Assignee: Oracle International Corporation
G06F16/2379G06F16/221H04L9/0643H04L9/50
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,640,391
App. No.
16/923,279
Granted
May 2, 2023
Kind
B2
Abstract

Herein are high throughput techniques for incorporating cryptographic blockchains into relational data. In an embodiment, a computer indicates, in a database dictionary in a database, that a relational table is for blockchain storage. The relational table contains application column(s). In response to that indication, the relational table is associated with system column(s) that are unmodifiable by administrators and clients of the database. The system column(s) include a cryptographic hash column. A request to store a particular value in a particular application column is received from a client. In response to receiving the request, a cryptographic hash value is calculated for a new row for the relational table. In the relational table, the computer stores the new row that contains: the particular value in the particular application column, and the cryptographic hash value in the cryptographic hash column.

Claims (53)

1. A method comprising:

receiving a database command that specifies that a particular relational table is for blockchain storage;

in response to receiving said database command:

a) indicating, in a database, that said particular relational table is for blockchain storage, wherein the particular relational table contains at least one application column; and

b) adding, to the particular relational table, at least one system column that is not modifiable by administrators and clients of the database, wherein the at least one system column includes a cryptographic hash column;

first storing, in the particular relational table, a particular row;

receiving, from a client, a request to revise a particular record, wherein the request specifies a new value to store in a particular application column of the at least one application column in the particular relational table;

calculating, in response to receiving the request, a cryptographic hash value for a new row for the particular relational table, wherein the new row and the particular row are different rows that represent said particular record; and

second storing, in the particular relational table, the new row that contains the cryptographic hash value in the cryptographic hash column, wherein said second storing the new row in the particular relational table comprises storing the new value in the particular application column in the particular relational table.

2. The method of claim 1 further comprising:

receiving, from a client, a request for content of the particular record;

sending, to the client in response to receiving the request for content, content of the new row without content of the particular row.

3. The method of claim 1 further comprising:

receiving a request to delete the particular record;

storing, in the particular relational table, a second new row that contains an indication that the particular record is deleted.

4. The method of claim 1 wherein said calculating the cryptographic hash value is based on a cryptographic hash value in the particular row.

5. The method of claim 1 further comprising deleting the particular relational table when the particular relational table is not accessed for a threshold duration.

6. The method of claim 1 wherein the at least one system column in said particular relational table contains blockchain data for multiple blockchains.

7. The method of claim 6 further comprising:

distributing said blockchain data for multiple blockchains across one or more database instances;

storing said blockchain data for a particular blockchain of said multiple blockchains partially in said particular relational table and partially in a second relational table that are in a same database instance of said one or more database instances.

8. The method of claim 6 further comprising a database transaction acquiring, in a canonical ordering, for each of two blockchains of said multiple blockchains, a respective lock.

9. The method of claim 8 wherein said acquiring said respective locks of the two blockchains occurs during a pre-commit callback of said database transaction.

10. The method of claim 8 wherein said canonical ordering depends on respective access frequencies of said two blockchains.

11. The method of claim 1 further comprising deleting the particular row of the particular relational table when a duration since a particular event for the particular row exceeds a threshold, wherein the particular event is last access of the particular row.

12. The method of claim 1 wherein:

the method further comprises deleting a temporal partition of the particular relational table that contains the particular row of the particular relational table when a duration since a particular event for the particular row exceeds a threshold;

the particular event is creation of the particular row.

13. The method of claim 1 wherein said request to revise the particular record comprises a digital signature of the client.

14. The method of claim 13 wherein the digital signature of the client is based on a value already stored in the at least one system column.

15. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause:

receiving a database command that specifies that a particular relational table is for blockchain storage;

in response to receiving said database command:

a) indicating, in a database, that said particular relational table is for blockchain storage, wherein the particular relational table contains at least one application column; and

b) adding, to the particular relational table, at least one system column that is not modifiable by administrators and clients of the database, wherein the at least one system column includes a cryptographic hash column;

first storing, in the particular relational table, a particular row;

receiving, from a client, a request to revise a particular record, wherein the request specifies a new value to store in a particular application column of the at least one application column in the particular relational table;

calculating, in response to receiving the request, a cryptographic hash value for a new row for the particular relational table, wherein the new row and the particular row are different rows that represent said particular record; and

second storing, in the particular relational table, the new row that contains the cryptographic hash value in the cryptographic hash column, wherein said second storing the new row in the particular relational table comprises storing the new value in the particular application column in the particular relational table.

16. The one or more non-transitory computer-readable media of claim 15 wherein the at least one system column in said particular relational table contains blockchain data for multiple blockchains.

17. The method of claim 1 wherein

the particular relational table exists before said indicating that the particular relational table is for blockchain storage.

18. The one or more non-transitory computer-readable media of claim 15 wherein the instructions further cause deleting the particular relational table when the particular relational table is not accessed for a threshold duration.

19. The one or more non-transitory computer-readable media of claim 16 wherein the instructions further cause:

distributing said blockchain data for multiple blockchains across one or more database instances;

storing said blockchain data for a particular blockchain of said multiple blockchains partially in said particular relational table and partially in a second relational table that are in a same database instance of said one or more database instances.

20. The one or more non-transitory computer-readable media of claim 15 wherein:

the instructions further cause deleting the particular row of the particular relational table when a duration since a particular event for the particular row exceeds a threshold, wherein the particular event is last access of the particular row.

21. The one or more non-transitory computer-readable media of claim 15 wherein:

the instructions further cause deleting a temporal partition of the particular relational table that contains the particular row of the particular relational table when a duration since a particular event for the particular row exceeds a threshold;

the particular event is creation of the particular row.

22. The method of claim 1 , wherein said database command is a data definition language statement that specifies creation of said particular relational table.

23. The one or more non-transitory computer-readable media of claim 15 wherein said database command is a data definition language statement that specifies creation of said particular relational table.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2021
From: SONAWANE, SACHIN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 056173/0817 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2020
From: LOAIZA, JUAN R.; HU, WEI-MING; SRIVASTAVA, AMRISH; GIRKAR, MAHESH BABURAO; STAMOS, JAMES W.
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 053621/0141 →
Continuity (2)
Provisional Application 62899019 · Sep 11, 2019
Related Publication 20210073209A1 · Mar 11, 2021