IP Library Granted Patent US 11,860,847
Granted Patent B2
US 11,860,847 · App. 17/111,039 · Granted Jan 2, 2024

Efficient production and consumption for data changes in a database under high concurrency

Inventor: Rohitashva Mathur (Walnut Creek, CA)
Assignee: Salesforce, Inc.
G06F16/2282G06F7/026
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,860,847
App. No.
17/111,039
Granted
Jan 2, 2024
Kind
B2
Abstract

A seed value assigned to a database table is determined. Numerically ordered invocation numbers are determined. Unordered pseudorandom numbers are generated based on the seed value and the invocation numbers to index temporally ordered data changes to the database table. It is determined whether the total number of yet-to-be-saved pseudorandom numbers reaches a maximum total number threshold. If so, the yet-to-be-saved pseudorandom numbers and a sequence of corresponding invocation numbers are saved in a sync table.

Claims (34)

1. A computer-implemented method, comprising:

detecting that a sequence of data changes was made to data values of a database table, wherein the sequence of data changes is indexed in a data change index based on pseudorandom numbers;

determining a first invocation number and a second invocation number greater than the first invocation number;

generating a sequence of pseudorandom numbers for all invocation numbers ranging between the first invocation number and the second invocation number, wherein the sequence of pseudorandom numbers begins with a first pseudorandom number generated based on a seed value assigned to the database table and the first invocation number, and wherein the sequence of pseudorandom numbers ends with a second pseudorandom number generated based on the seed value and the second invocation number; and

retrieving, via entries of the data change index that are accessed using the sequence of pseudorandom numbers, the sequence of data changes made to the data values of the database table.

2. The method of claim 1 , wherein all the invocation numbers ranging between the first invocation number and the second invocation number form a numerically ordered sequence; wherein the sequence of pseudorandom numbers form a numerically unordered sequence.

3. The method of claim 1 , wherein a pseudorandom number in the sequence of pseudorandom numbers is used by a data change consumer to retrieve a respective data change in the sequence of data changes to the database table.

4. The method of claim 1 , wherein the sequence of data changes are applied by one or more data change producers to the database table over time in a time sequential order corresponding to a numeric order of the invocation numbers ranging between the first invocation number and the second invocation number.

5. The method of claim 1 , wherein each data change in the sequence of data changes corresponds to a respective invocation number in the invocation numbers ranging between the first invocation number and the second invocation number; wherein the data change is indexed based on a pseudorandom number generated based on the seed value and the respective invocation number.

6. The method of claim 1 , wherein the database table comprises a plurality of table columns; wherein the plurality of table columns of the database table comprises an indexed table column used to store pseudorandom numbers.

7. The method of claim 1 , wherein the sequence of data changes to the database table is retrieved by a data change consumer while the database table is concurrently accessed by at least one of a data change producer or another data change consumer.

8. One or more non-transitory computer readable media storing a program of instructions that is executable by a device to perform:

detecting that a sequence of data changes was made to data values of a database table, wherein the sequence of data changes is indexed in a data change index based on pseudorandom numbers;

determining a first invocation number and a second invocation number greater than the first invocation number;

generating a sequence of pseudorandom numbers for all invocation numbers ranging between the first invocation number and the second invocation number, wherein the sequence of pseudorandom numbers begins with a first pseudorandom number generated based on a seed value assigned to the database table and the first invocation number, and wherein the sequence of pseudorandom numbers ends with a second pseudorandom number generated based on the seed value and the second invocation number; and

retrieving, via entries of the data change index that are accessed using the sequence of pseudorandom numbers, the sequence of data changes made to the data values of the database table.

9. The media of claim 8 , wherein all the invocation numbers ranging between the first invocation number and the second invocation number form a numerically ordered sequence; wherein the sequence of pseudorandom numbers form a numerically unordered sequence.

10. The media of claim 8 , wherein a pseudorandom number in the sequence of pseudorandom numbers is used by a data change consumer to retrieve a respective data change in the sequence of data changes to the database table.

11. The media of claim 8 , wherein the sequence of data changes are applied by one or more data change producers to the database table over time in a time sequential order corresponding to a numeric order of the invocation numbers ranging between the first invocation number and the second invocation number.

12. The media of claim 8 , wherein each data change in the sequence of data changes corresponds to a respective invocation number in the invocation numbers ranging between the first invocation number and the second invocation number; wherein the data change is indexed based on a pseudorandom number generated based on the seed value and the respective invocation number.

13. The media of claim 8 , wherein the database table comprises a plurality of table columns; wherein the plurality of table columns of the database table comprises an indexed table column used to store pseudorandom numbers.

14. The media of claim 8 , wherein the sequence of data changes to the database table is retrieved by a data change consumer while the database table is concurrently accessed by at least one of a data change producer or another data change consumer.

15. A system, comprising:

one or more computing processors;

one or more non-transitory computer readable media storing a program of instructions that is executable by the one or more computing processors to perform:

detecting that a sequence of data changes was made to data values of a database table, wherein the sequence of data changes is indexed in a data change index based on pseudorandom numbers;

determining a first invocation number and a second invocation number greater than the first invocation number;

generating a sequence of pseudorandom numbers for all invocation numbers ranging between the first invocation number and the second invocation number, wherein the sequence of pseudorandom numbers begins with a first pseudorandom number generated based on a seed value assigned to the database table and the first invocation number, and wherein the sequence of pseudorandom numbers ends with a second pseudorandom number generated based on the seed value and the second invocation number; and

retrieving, via entries of the data change index that are accessed using the sequence of pseudorandom numbers, the sequence of data changes made to the data values of the database table.

16. The system of claim 15 , wherein all the invocation numbers ranging between the first invocation number and the second invocation number form a numerically ordered sequence; wherein the sequence of pseudorandom numbers form a numerically unordered sequence.

17. The system of claim 15 , wherein a pseudorandom number in the sequence of pseudorandom numbers is used by a data change consumer to retrieve a respective data change in the sequence of data changes to the database table.

18. The system of claim 15 , wherein the sequence of data changes are applied by one or more data change producers to the database table over time in a time sequential order corresponding to a numeric order of the invocation numbers ranging between the first invocation number and the second invocation number.

19. The system of claim 15 , wherein each data change in the sequence of data changes corresponds to a respective invocation number in the invocation numbers ranging between the first invocation number and the second invocation number; wherein the data change is indexed based on a pseudorandom number generated based on the seed value and the respective invocation number.

20. The system of claim 15 , wherein the database table comprises a plurality of table columns; wherein the plurality of table columns of the database table comprises an indexed table column used to store pseudorandom numbers.

Assignments (2)
CHANGE OF NAME Recorded Nov 17, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 065626/0276 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2020
From: MATHUR, ROHITASHVA
To: SALESFORCE.COM, INC.
Reel/Frame 054543/0862 →
Continuity (2)
Continuation 16141496 · Sep 25, 2018
Related Publication 20210117400A1 · Apr 22, 2021