IP Library Granted Patent US 11,003,662
Granted Patent B2
US 11,003,662 · App. 15/798,077 · Granted May 11, 2021

Trigger-free asynchronous maintenance of custom indexes and skinny performance meta-structures

Inventor: Rohitashva Mathur (Walnut Creek, CA)
Assignee: salesforce.com, inc.
G06F16/2455G06F16/215G06F16/2272G06F16/2282G06F16/2365
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,003,662
App. No.
15/798,077
Granted
May 11, 2021
Kind
B2
Abstract

Trigger-free asynchronous maintenance of custom indexes and skinny performance meta-structures is described. A database system receives a request to manipulate data in an object in a database table, and determines whether the object in the database table is associated with a user-based data structure. If the object in the database table is associated with the user-based data structure, the database system manipulates the data in the object in the database table and data in an object in an intermediate data table. The database system receives a query, and determines whether the query requests any data that is in the user-based data structure. If the query requests any data that is in the user-based data structure, the database system creates a query result by combining any data that is in the object in the intermediate data table with any requested data that is in the user-based data structure, and outputs the query result.

Claims (64)

1. A system for trigger-free asynchronous maintenance of custom indexes and skinny performance meta-structures, the system comprising:

one or more processors; and

a non-transitory computer readable medium storing a plurality of instructions, which when executed, cause the one or more processors to:

receive, by the database system, a request to manipulate data in an object in a database table;

determine, by a database system, in response to the request, that the object in the database table is associated with data in a user-based data structure, the user-based data structure containing a subset of the data in database table;

perform, by the database system, the requested manipulation of the data in the object in the database table synchronously with performing the same manipulation on data in a corresponding object in an intermediate data table associated with the user-based data structure;

receive, by the database system, a query requesting data;

determine, by the database system, that the query requests any data in the user-based data structure;

query, by the database system, the user-based data structure and the intermediate data table for the requested data;

create, by the database system, a query result by combining any manipulated data that is in the corresponding object in the intermediate data table with any requested data that is in the user-based data structure; and

cause, by the database system, the query result to be outputted.

2. The system of claim 1 , wherein the user-based data structure comprises at least one of a copy of a tenant-based subset of a multi-tenant database that comprises the database table, and a custom index created to optimize a database search by a user of the database system.

3. The system of claim 1 , comprising further instructions, which when executed, cause the one or more processors to manipulate the data in the object in the database table, in response to a determination that the object in the database table is not associated with the user-based data structure.

4. The system of claim 1 , wherein combining any data that is in the object in the intermediate data table with any requested data that is in the user-based data structure comprises:

determining whether the request to manipulate the data in the object in the database table comprises a delete request; and

deleting data, which corresponds to the data that is in the object in the intermediate data table, from any requested data that is in the user-based data structure, in response to a determination that the request to manipulate the data in the object in the database table comprises the delete request.

5. The system of claim 1 , wherein combining any data that is in the object in the intermediate data table with any requested data that is in the user-based data structure comprises:

determining whether the request to manipulate the data in the object in the database table comprises an insert request; and

inserting the data that is in the object in the intermediate data table into any requested data that is in the user-based data structure, in response to a determination that the request to manipulate the data in the object in the database table comprises the insert request.

6. The system of claim 1 , wherein combining any data that is in the object in the intermediate data table with any requested data that is in the user-based data structure comprises:

determining whether the request to manipulate the data in the object in the database table comprises an update request; and

updating any requested data that is in the user-based data structure data with the data that is in the object in the intermediate data table, in response to a determination that the request to manipulate the data in the object in the database table comprises the update request.

7. The system of claim 1 , comprising further instructions, which when executed, cause the one or more processors to manipulate, by the database system, data in the user-based structure by using the data that is in the object in the intermediate data table.

8. A computer program product comprising computer-readable program code to be executed by one or more processors when retrieved from a non-transitory computer-readable medium, the program code including instructions to:

receive, by the database system, a request to manipulate data in an object in a database table;

determine, by a database system, in response to the request, that the object in the database table is associated with data in a user-based data structure, the user-based data structure containing a subset of the data in database table;

perform, by the database system, the requested manipulation of the data in the object in the database table synchronously with performing the same manipulation on data in a corresponding object in an intermediate data table associated with the user-based data structure;

receive, by the database system, a query requesting data;

determine, by the database system, that the query requests any data in the user-based data structure;

query, by the database system, the user-based data structure and the intermediate data table for the requested data;

create, by the database system, a query result by combining any manipulated data that is in the corresponding object in the intermediate data table with any requested data that is in the user-based data structure; and

cause, by the database system, the query result to be outputted.

9. The computer program product of claim 8 , wherein the user-based data structure comprises at least one of a copy of a tenant-based subset of a multi-tenant database that comprises the database table, and a custom index created to optimize a database search by a user of the database system.

10. The computer program product of claim 8 , wherein the computer-readable program code comprises further instructions to manipulate the data in the object in the database table, in response to a determination that the object in the database table is not associated with the user-based data structure.

11. The computer program product of claim 8 , wherein combining any data that is in the object in the intermediate data table with any requested data that is in the user-based data structure comprises:

determining whether the request to manipulate the data in the object in the database table comprises a delete request; and

deleting data, which corresponds to the data that is in the object in the intermediate data table, from any requested data that is in the user-based data structure, in response to a determination that the request to manipulate the data in the object in the database table comprises the delete request.

12. The computer program product of claim 8 , wherein combining any data that is in the object in the intermediate data table with any requested data that is in the user-based data structure comprises:

determining whether the request to manipulate the data in the object in the database table comprises an insert request; and

inserting the data that is in the object in the intermediate data table into any requested data that is in the user-based data structure, in response to a determination that the request to manipulate the data in the object in the database table comprises the insert request.

13. The computer program product of claim 8 , wherein combining any data that is in the object in the intermediate data table with any requested data that is in the user-based data structure comprises:

determining whether the request to manipulate the data in the object in the database table comprises an update request; and

updating any requested data that is in the user-based data structure data with the data that is in the object in the intermediate data table, in response to a determination that the request to manipulate the data in the object in the database table comprises the update request.

14. The computer program product of claim 8 , wherein the computer-readable program code comprises further instructions to manipulate, by the database system, data in the user-based structure by using the data that is in the object in the intermediate data table.

15. A method for trigger-free asynchronous maintenance of custom indexes and skinny performance meta-structures, the method comprising:

receiving, by the database system, a request to manipulate data in an object in a database table;

determining, by a database system, in response to the request, that the object in the database table is associated with a corresponding object in a user-based data structure, the user-based data structure containing a subset of the data in database table;

performing, by the database system, the requested manipulation of the data in the object in the database table synchronously with performing the same manipulation on data in a corresponding object in an intermediate data table associated with the user-based data structure;

receiving, by the database system, a query requesting data;

determining, by the database system, that the query requests any data in the user-based data structure;

querying, by the database system, the user-based data structure and the intermediate data table for the requested data;

creating, by the database system, a query result by combining any manipulated data that s in the corresponding object in the intermediate data table with any requested data that is in the user-based data structure; and

causing, by the database system, the query result to be outputted.

16. The method of claim 15 , wherein the user-based data structure comprises at least one of a copy of a tenant-based subset of a multi-tenant database that comprises the database table, and a custom index created to optimize a database search by a user of the database system.

17. The method of claim 15 , the method further comprising manipulating the data in the object in the database table, in response to a determination that the object in the database table is not associated with the user-based data structure.

18. The method of claim 15 , wherein combining any data that is in the object in the intermediate data table with any requested data that is in the user-based data structure comprises:

determining whether the request to manipulate the data in the object in the database table comprises a delete request; and

deleting data, which corresponds to the data that is in the object in the intermediate data table, from any requested data that is in the user-based data structure, in response to a determination that the request to manipulate the data in the object in the database table comprises the delete request.

19. The method of claim 15 , wherein combining any data that is in the object in the intermediate data table with any requested data that is in the user-based data structure comprises:

determining whether the request to manipulate the data in the object in the database table comprises an insert request;

inserting the data that is in the object in the intermediate data table into any requested data that is in the user-based data structure, in response to a determination that the request to manipulate the data in the object in the database table comprises the insert request;

determining whether the request to manipulate the data in the object in the database table comprises an update request; and

updating any requested data that is in the user-based data structure data with the data that is in the object in the intermediate data table, in response to a determination that the request to manipulate the data in the object in the database table comprises the update request.

20. The method of claim 15 , the method further comprising manipulating, by the database system, data in the user-based structure by using the data that is in the object in the intermediate data table.

Assignments (2)
CHANGE OF NAME Recorded Oct 30, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 065394/0169 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2017
From: MATHUR, ROHITASHVA
To: SALESFORCE.COM, INC.
Reel/Frame 043985/0463 →
Continuity (1)
Related Publication 20190130002A1 · May 2, 2019