IP Library Granted Patent US 11,494,408
Granted Patent B2
US 11,494,408 · App. 16/581,253 · Granted Nov 8, 2022

Asynchronous row to object enrichment of database change streams

Inventors: Mikhail Chainani (San Francisco, CA); Xiaodan Wang (Dublin, CA); Vijayanth Devadhar (Fremont, CA)
Assignee: salesforce.com, inc.
G06F16/273G06F16/2282G06F16/2358G06F16/2379
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,494,408
App. No.
16/581,253
Granted
Nov 8, 2022
Kind
B2
Abstract

A first copy of a database object may be constructed prior to applying a designated database update request to a first database. The database object may be represented by a plurality of database table rows in the first database, and the request may update one or more of the plurality of rows. The request may be applied to the first database to update the one or more of the plurality of rows in the first database. A second copy of the database object may be constructed after applying the database update request to the first database. A message identifying a difference between the first copy of the database object and a second copy of the database object may be transmitted to a remote computing device.

Claims (38)

1. A computer-implemented method implemented in a database system, the method comprising:

receiving a database update request to update a database object including a plurality of data values associated with a plurality of fields, the database update request modifying a first subset of the plurality of data values;

constructing via a processor a first copy of the database object based on information retrieved from a first database prior to applying the database update request;

applying the database update request to the first database to update the database object;

constructing via the processor a second copy of the database object based on information retrieved from the first database after applying the database update request to the first database;

identifying a second subset of the plurality of data values that differ between the first copy of the database object and the second copy of the database object, the second subset of the plurality of data values including the first subset of the plurality of data values and a third subset of the plurality of data values; and

transmitting to a remote computing device via a communications interface a message identifying the second subset of the plurality of data values.

2. The method recited in claim 1 , wherein a second database replicates data stored in the first database.

3. The method recited in claim 2 , wherein each of the first and second database are configured in accordance with a designated configuration structure, the designated configuration structure identifying one or more database tables, the designated configuration structure identifying one or more columns included in the identified one or more database tables.

4. The method recited in claim 2 , wherein the database update request is determined by monitoring a row-level change stream that captures changes to the first database.

5. The method recited in claim 4 , wherein the database update request is applied to the second database after a corresponding update request is applied to the first database.

6. The method recited in claim 4 , wherein monitoring the row-level change stream comprises comparing one or more entries in the row-level change stream with one or more criteria, the one or more criteria identifying characteristics of objects for which to generate an object-level change stream.

7. The method recited in claim 1 , wherein the database system is implemented in an on-demand computing services environment configured to provide computing services to a plurality of clients via the internet.

8. The method recited in claim 7 , wherein the remote computing device is associated with a designated one of the plurality of clients.

9. The method recited in claim 7 , wherein the remote computing device is located within the on-demand computing services environment, and wherein the remote computing device is configured to execute an application within the on-demand computing services environment, the application receiving the message identifying the second subset of the plurality of data values.

10. The method recited in claim 1 , wherein constructing the first and second copies of the database object includes applying object relational mapping to map a plurality of database table rows to the database object.

11. The method recited in claim 1 , wherein the database system includes a multitenant database configured to store information associated with a plurality of organizations in a designated database table.

12. A computer-implemented method implemented in a database system, the method comprising:

receiving a database update request to update a database object including a plurality of data values associated with a plurality of fields, the database update request modifying a first subset of the plurality of data values;

constructing via a processor a first copy of the database object based on information retrieved from a first database prior to applying the database update request;

applying the database update request to the first database to update the database object;

constructing via the processor a second copy of the database object based on information retrieved from the first database after applying the database update request to the first database;

identifying a second subset of the plurality of data values that differ between the first copy of the database object and the second copy of the database object, the second subset of the plurality of data values including the first subset of the plurality of data values and a third subset of the plurality of data values; and

transmitting to a remote computing device via a communications interface a message identifying the second subset of the plurality of data values.

13. The database system recited in claim 12 , wherein a second database replicates data stored in the first database.

14. The database system recited in claim 13 , wherein each of the first and second database are configured in accordance with a designated configuration structure, the designated configuration structure identifying one or more database tables, the designated configuration structure identifying one or more columns included in the identified one or more database tables.

15. The database system recited in claim 13 , wherein the database update request is determined by monitoring a row-level change stream that captures changes to the first database.

16. The database system recited in claim 15 , wherein the database update request is applied to the second database after a corresponding update request is applied to the first database.

17. The database system recited in claim 15 , wherein monitoring the row-level change stream comprises comparing one or more entries in the row-level change stream with one or more criteria, the one or more criteria identifying characteristics of objects for which to generate an object-level change stream.

18. The database system recited in claim 12 , wherein the database system is implemented in an on-demand computing services environment configured to provide computing services to a plurality of clients via the internet.

19. One or more non-transitory computer readable media having instructions stored thereon for performing a method, the method comprising:

receiving a database update request to update a database object including a plurality of data values associated with a plurality of fields, the database update request modifying a first subset of the plurality of data values;

constructing via a processor a first copy of the database object based on information retrieved from a first database prior to applying the database update request;

applying the database update request to the first database to update the database object;

constructing via the processor a second copy of the database object based on information retrieved from the first database after applying the database update request to the first database;

identifying a second subset of the plurality of data values that differ between the first copy of the database object and the second copy of the database object, the second subset of the plurality of data values including the first subset of the plurality of data values and a third subset of the plurality of data values; and

transmitting to a remote computing device via a communications interface a message identifying the second subset of the plurality of data values.

20. The one or more non-transitory computer readable media recited in claim 19 , wherein a second database replicates data stored in the first database, wherein each of the first and second database are configured in accordance with a designated configuration structure, the designated configuration structure identifying one or more database tables, the designated configuration structure identifying one or more columns included in the identified one or more database tables, wherein the database update request is determined by monitoring a row-level change stream that captures changes to the first database, and wherein the database update request is applied to the second database after a corresponding update request is applied to the first database.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0444 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2019
From: CHAINANI, MIKHAIL; WANG, XIAODAN; DEVADHAR, VIJAYANTH
To: SALESFORCE.COM, INC.
Reel/Frame 050480/0815 →
Continuity (1)
Related Publication 20210089556A1 · Mar 25, 2021
Cited By (1)
US 12,443,624