IP Library Granted Patent US 11,722,579
Granted Patent B2
US 11,722,579 · App. 17/503,464 · Granted Aug 8, 2023

Dependency management for shared data objects in a database system

Inventor: Rui Zhang (Fremont, CA)
Assignee: Salesforce, Inc.
H04L67/568H04L67/025H04L67/1097H04L67/55G06F16/20G06F16/28G06F16/30
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,722,579
App. No.
17/503,464
Granted
Aug 8, 2023
Kind
B2
Abstract

Techniques are disclosed relating to managing dependencies between shared data objects in a database system. In various embodiments, a data storage system may maintain a function cache that is operable to store functions that are accessible to one or more applications hosted by a server system. In response to a request to invalidate a first data type utilized by one or more of these functions, various embodiments may include accessing an inverted index that specifies a mapping between data types and corresponding functions, stored in the function cache, which depend on those data types. Using the inverted index, various embodiments include identifying a set of functions that depend on the first data type and invalidating the set of functions in the function cache such that the set of functions are no longer accessible by the applications.

Claims (58)

1. A method, comprising:

maintaining, by a data storage system of a server system, a cache operable to store data objects that are accessible by a plurality of applications hosted by the server system, wherein the data objects include a first data object of a first object type; and

managing dependencies between the data objects, by the data storage system, using an inverted index that specifies a mapping between a first set of data objects of the first object type and a second set of data objects that depend on the first set of data objects, wherein the managing the dependencies includes:

receiving a request to invalidate the first data object; and

using the inverted index to identify a subset of the second set of data objects that depend on the first data object.

2. The method of claim 1 , wherein the managing the dependencies further includes:

accessing a first foreign object-dependency list associated with the first data object; and

based on the first foreign object-dependency list, identifying a set of foreign dependency inverted indexes for which the first data object appears on at least one object list.

3. The method of claim 2 , wherein the managing the dependencies further includes:

for one or more of the set of foreign dependency inverted indexes, removing references to the first data object from the at least one object list.

4. The method of claim 1 , wherein each of the second set of data objects are of an object type other than the first object type, and wherein the managing the dependencies further includes:

recursively invalidating the subset of the second set of data objects in the cache such that the subset of data objects is inaccessible to the plurality of applications.

5. The method of claim 4 , wherein the second set of data objects include:

a second data object of a second object type; and

a third data object of a third object type.

6. The method of claim 1 , wherein the managing the dependencies further includes:

using an inverted local object-dependency list, evaluating local dependencies between the first data object and a set of local data objects, of the first object type, that depend on the first data object.

7. The method of claim 6 , wherein the managing the dependencies further includes:

identifying the set of local data objects that depend on the first data object using the inverted local object-dependency list; and

recursively invalidating each of the set of local data objects.

8. The method of claim 1 , wherein the cache is a function cache operable to store a plurality of functions that are accessible to the plurality of applications, and wherein the managing the dependencies further includes:

invalidating the first data object from the function cache.

9. A non-transitory, computer-readable medium having instructions stored thereon that are capable of being executed by a server system to cause operations comprising:

maintaining a cache operable to store data objects that are accessible by a plurality of applications hosted by the server system, wherein the data objects include a first data object of a first object type; and

managing dependencies between the data objects using an inverted index that specifies a mapping between a first set of data objects of the first object type and a second set of data objects that depend on the first set of data objects, wherein the managing the dependencies includes:

receiving a request to invalidate the first data object; and

using the inverted index to identify a subset of the second set of data objects that depend on the first data object.

10. The non-transitory, computer-readable medium of claim 9 , wherein the managing the dependencies further includes:

accessing a first foreign object-dependency list associated with the first data object; and

based on the first foreign object-dependency list, identifying a set of foreign dependency inverted indexes for which the first data object appears on at least one object list.

11. The non-transitory, computer-readable medium of claim 10 , wherein the managing the dependencies further includes:

for one or more of the set of foreign dependency inverted indexes, removing references to the first data object from the at least one object list.

12. The non-transitory, computer-readable medium of claim 9 , wherein each of the second set of data objects are of an object type other than the first object type, and wherein the managing the dependencies further includes:

recursively invalidating the subset of the second set of data objects in the cache such that the subset of data objects is inaccessible to the plurality of applications.

13. The non-transitory, computer-readable medium of claim 9 , wherein the managing the dependencies further includes:

using an inverted local object-dependency list, evaluating local dependencies between the first data object and a set of local data objects, of the first object type, that depend on the first data object.

14. The non-transitory, computer-readable medium of claim 13 , wherein the managing the dependencies further includes:

identifying the set of local data objects that depend on the first data object using the inverted local object-dependency list; and

recursively invalidating each of the set of local data objects.

15. A method; comprising:

providing, by a data storage system of a server system, a cache operable to store data objects that are accessible by a plurality of applications hosted by the server system; and

managing, by the data storage system, dependencies between the data objects using an inverted index that specifies a mapping between a first set of data objects of a first object type and a second set of data objects that depend on the first set of data objects, wherein, for a first data object, of the first set of data objects, the managing the dependencies includes:

maintaining a foreign dependency list that specifies a first subset of data objects, of object types other than the first object type, on which the first data object depends; and

maintaining an inverted local dependency list that specifies a second subset of data objects, of the first object type, that depend on the first data object.

16. The method of claim 15 , further comprising:

receiving a request to invalidate the first data object; and

using the inverted index to identify a subset of the second set of data objects that depend on the first data object.

17. The method of claim 16 , further comprising:

recursively invalidating the subset of the second set of data objects that depend on the first data object; and

invalidating the first data object.

18. The method of claim 16 , further comprising:

using the foreign dependency list to identify a set of foreign dependency inverted indexes for which the first data object will appear on at least one object list; and

for each of the set of foreign dependency inverted indexes, removing references to the first data object from each object list in which the first data object is listed.

19. The method of claim 15 , further comprising:

using the inverted local dependency list, evaluating local dependencies between the first data object and a set of local data objects, of the first object type, that depend on the first data object.

20. The method of claim 19 , further comprising:

identifying the set of local data objects that depend on the first data object using the inverted local dependency list; and

recursively invalidating each of the set of local data objects.

Assignments (2)
CHANGE OF NAME Recorded Jun 20, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 064025/0767 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2021
From: ZHANG, RUI
To: SALESFORCE.COM, INC.
Reel/Frame 057815/0667 →
Continuity (2)
Continuation 17162728 · Jan 29, 2021
Related Publication 20220247832A1 · Aug 4, 2022