IP Library Granted Patent US 10,489,366
Granted Patent B2
US 10,489,366 · App. 15/418,520 · Granted Nov 26, 2019

Change data capture using nested buckets

Inventor: Boris Milrud (Castro Valley, CA)
Assignee: salesforce.com, inc.
G06F16/2228G06F16/2291G06F16/23G06F16/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 10,489,366
App. No.
15/418,520
Granted
Nov 26, 2019
Kind
B2
Abstract

Systems and techniques are disclosed relating to management of a database. A method may include maintaining, by a computer system, a multi-tenant database operable to store a plurality of objects. Each object may be capable of including up to a maximum potential number of definable fields. Each field may have an associated index number that has been assigned sequentially. The method may include receiving user-defined data values for a subset of the maximum potential number of fields of a particular object, and storing, for the particular object, a boundary value indicating a range of index values that have been defined for the particular object. The method may further include, in response to determining that the particular object has been accessed, selectively processing a number of fields of the particular object. The number of fields may be determined based on the stored boundary value for the particular object.

Claims (40)

1. A method, comprising:

maintaining, by a computer system, a database operable to store a plurality of objects for a particular tenant of the database such that each object is stored in a row capable of including up to a maximum potential number of definable fields, each of which has an associated index number that has been assigned sequentially;

receiving, by the computer system, user-defined data values for a subset of the maximum potential number of definable fields in a particular row corresponding to a particular object in the database;

storing, for the particular object, a boundary value indicating a range of index values that have been defined for the particular object; and

in response to determining that the particular object has been accessed, selectively processing a number of fields within the particular row, wherein the number of fields is determined based on the stored boundary value for the particular object.

2. The method of claim 1 , wherein the selectively processing includes identifying fields of the number of fields with values that have been modified in association with the access of the particular object.

3. The method of claim 1 , wherein the stored boundary value for the subset of the maximum potential number of definable fields within the particular row is indicative of a highest user-defined field value.

4. The method of claim 1 , wherein the maximum potential number of definable fields are organized into a plurality of buckets each having two or more of the definable fields, and wherein the stored boundary value for the subset of the maximum potential number of definable fields within the particular row indicates which of the plurality of buckets are to be processed in order to update fields upon an access to the particular object.

5. The method of claim 4 , wherein the selectively processing includes processing fields within ones of the plurality of buckets indicated by the stored boundary value, and not processing fields in ones of the plurality of buckets not indicated by the stored boundary value.

6. The method of claim 4 , wherein the selectively processing includes:

comparing the stored boundary value to a field index associated with an initial bucket of the plurality of buckets; and

in response to the comparison indicating that fields in the initial bucket are to be processed, processing those fields.

7. The method of claim 6 , wherein the selectively processing includes repeating the comparing and the processing for successive current buckets until the comparing indicates that fields in the current bucket are not to be processed.

8. A non-transitory computer-readable medium having instructions stored thereon that are executable by a computing device to perform operations comprising:

maintaining, by a computer system, a database operable to store a plurality of objects for a particular tenant of the database such that each object is stored in a row capable of including up to a maximum potential number of definable fields, each of which has an associated index number that has been assigned sequentially;

receiving, by the computer system, user-defined data values for a subset of the maximum potential number of definable fields in a particular row corresponding to a particular object in the database;

storing, for the particular object, a boundary value indicating a range of index values that have been defined for the particular object; and

in response to determining that the particular object has been accessed, selectively processing a number of fields within the particular row, wherein the number of fields is determined based on the stored boundary value for the particular object.

9. The non-transitory computer-readable medium of claim 8 , wherein the selectively processing includes identifying fields of the number of fields with values that have been modified in association with the access of the particular object.

10. The non-transitory computer-readable medium of claim 8 , wherein the stored boundary value for the subset of the maximum potential number of definable fields within the particular row is indicative of a highest user-defined field value.

11. The non-transitory computer-readable medium of claim 8 , wherein the maximum potential number of definable fields are organized into a plurality of buckets each having two or more of the definable fields, and wherein the stored boundary value for the subset of the maximum potential number of definable fields within the particular row indicates which of the plurality of buckets are to be processed in order to update fields upon an access to the particular object.

12. The non-transitory computer-readable medium of claim 11 , wherein the selectively processing includes processing fields within ones of the plurality of buckets indicated by the stored boundary value, and not processing fields in ones of the plurality of buckets not indicated by the stored boundary value.

13. The non-transitory computer-readable medium of claim 11 , wherein the selectively processing includes:

comparing the stored boundary value to a field index associated with an initial bucket of the plurality of buckets; and

in response to the comparison indicating that fields in the initial bucket are to be processed, processing those fields.

14. The non-transitory computer-readable medium of claim 13 , wherein the selectively processing includes repeating the comparing and the processing for successive current buckets until the comparing indicates that fields in the current bucket are not to be processed.

15. A system comprising:

a memory configured to store a database including a plurality of objects for a particular tenant of the database such that each object is stored in a row capable of including up to a maximum potential number of definable fields, each of which has an associated index number that has been assigned sequentially;

a processor configured to:

receive user-defined data values for a subset of the maximum potential number of definable fields in a particular row corresponding to a particular object in the database;

store, for the particular object, a boundary value indicating a range of index values that have been defined for the particular object; and

in response to determining that the particular object has been accessed, selectively process a number of fields within the particular row, wherein the number of fields is determined based on the stored boundary value for the particular object.

16. The system of claim 15 , wherein to selectively process the number of fields, the processor is further configured to identify fields of the number of fields with values that have been modified in association with the access of the particular object.

17. The system of claim 15 , wherein the stored boundary value for the subset of the maximum potential number of definable fields within the particular row is indicative of a highest user-defined field value.

18. The system of claim 15 , wherein the maximum potential number of definable fields are organized into a plurality of buckets each having two or more of the definable fields, and wherein the stored boundary value for the subset of the maximum potential number of definable fields within the particular row indicates which of the plurality of buckets are to be processed in order to update fields upon an access to the particular object.

19. The system of claim 18 , wherein to selectively process the number of fields, the processor is further configured to process fields within ones of the plurality of buckets indicated by the stored boundary value, and not process fields in ones of the plurality of buckets not indicated by the stored boundary value.

20. The system of claim 18 , wherein to selectively process the number of fields, the processor is further configured to:

compare the stored boundary value to a field index associated with an initial bucket of the plurality of buckets;

in response to the comparison indicating that fields in the initial bucket are to be processed, process those fields; and

repeat the comparing and the processing for successive current buckets until the comparing indicates that fields in the current bucket are not to be processed.

Assignments (2)
CHANGE OF NAME Recorded Nov 21, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069431/0164 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2017
From: MILRUD, BORIS
To: SALESFORCE.COM, INC.
Reel/Frame 041112/0850 →