IP Library Granted Patent US 12,204,948
Granted Patent B2
US 12,204,948 · App. 18/464,078 · Granted Jan 21, 2025

Elastic data partitioning of a database

Inventor: Rohitashva Mathur (Walnut Creek, CA)
Assignee: Salesforce, Inc.
G06F9/5077G06F3/0611G06F3/0644G06F3/0665G06F3/067G06F9/505G06F16/122
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 12,204,948
App. No.
18/464,078
Granted
Jan 21, 2025
Kind
B2
Abstract

A database entry may be stored in a container in a database table corresponding with a partition key. The partition key may be determined by applying one or more partition rules to one or more data values associated with the database entry. The database entry may be an instance of one of a plurality of data object definitions associated with database entries in the database. Each of the data object definitions may identify a respective one or more data fields included within an instance of the data object definition.

Claims (34)

1. A method comprising:

receiving via a communication interface a request to retrieve data from a database table storing a plurality of database entries in one or more containers, the plurality of database entries including a respective one or more data values arranged in a respective one or more data fields in accordance with a respective data object definition, the database table being associated with a plurality of data object definitions including a first data object definition associated with a first partition rule and a second data object definition associated with a second partition rule different from the first partition rule, the request including a first database query identifying one or more characteristics of the data to be retrieved;

applying the first partition rule to the one or more characteristics to identify a subset of the one or more containers, the one or more characteristics identifying the first data object definition;

determining via a processor a second database query based on the first database query, the second database query being limited to the subset of the one or more containers; and

transmitting an instruction to execute the second database query to retrieve the data.

2. The method recited in claim 1 , wherein determining the second database query involves determining a respective computing cost estimate of each of a plurality of alternative database queries including the second database query.

3. The method recited in claim 1 , wherein the second database query is configured to conduct a full scan of the subset of the one or more containers.

4. The method recited in claim 1 , wherein the second database query is configured to employ an index that is local to a designated container of the subset of the one or more containers.

5. The method recited in claim 1 , wherein the first database query and the second database query are expressed in different query languages.

6. The method recited in claim 1 , the method further comprising:

querying a global index table based on the one or more characteristics, the global index table including a global index that spans the database table.

7. The method recited in claim 1 , wherein the first partition rule is formulated as a Boolean expression over one or more data fields.

8. The method recited in claim 7 , wherein the first data object definition identifies a respective data type for each of the data fields.

9. The method recited in claim 8 , wherein the first partition rule can be applied to the one or more data fields without accessing the first data object definition.

10. The method recited in claim 1 , wherein the first partition rule includes a partition key, and wherein the partition key corresponds to a designated container identifier associated with a designated container of the subset of the one or more containers.

11. The method recited in claim 10 , wherein applying a designated function to the partition key yields the designated container, the designated function selected from the group consisting of: a hash function and an identity function.

12. The method recited in claim 1 , wherein the database table resides within a multi-tenant database system, and wherein the plurality of database entries are associated with a plurality of tenant organizations, and wherein the first partition rule is specific to a designated tenant organization of the plurality of tenant organization.

13. A database system implemented using a server system, the database system comprising:

a communication interface configurable to a request to retrieve data from a database table storing a plurality of database entries in one or more containers, the plurality of database entries including a respective one or more data values arranged in a respective one or more data fields in accordance with a respective data object definition, the database table being associated with a plurality of data object definitions including a first data object definition associated with a first partition rule and a second data object definition associated with a second partition rule different from the first partition rule, the request including a first database query identifying one or more characteristics of the data to be retrieved; and

a processor configurable to:

apply the first partition rule to the one or more characteristics to identify a subset of the one or more containers, the one or more characteristics identifying the first data object definition,

determine a second database query based on the first database query, the second database query being limited to the subset of the one or more containers, and

transmit an instruction to execute the second database query to retrieve the data.

14. The database system recited in claim 13 , wherein determining the second database query involves determining a respective computing cost estimate of each of a plurality of alternative database queries including the second database query.

15. The database system recited in claim 13 , wherein the second database query is configured to conduct a full scan of the subset of the one or more containers.

16. The database system recited in claim 13 , wherein the second database query is configured to employ an index that is local to a designated container of the subset of the one or more containers.

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

receiving via a communication interface a request to retrieve data from a database table storing a plurality of database entries in one or more containers, the plurality of database entries including a respective one or more data values arranged in a respective one or more data fields in accordance with a respective data object definition, the database table being associated with a plurality of data object definitions including a first data object definition associated with a first partition rule and a second data object definition associated with a second partition rule different from the first partition rule, the request including a first database query identifying one or more characteristics of the data to be retrieved;

applying the first partition rule to the one or more characteristics to identify a subset of the one or more containers, the one or more characteristics identifying the first data object definition;

determining via a processor a second database query based on the first database query, the second database query being limited to the subset of the one or more containers; and

transmitting an instruction to execute the second database query to retrieve the data.

18. The one or more non-transitory computer readable media recited in claim 17 , wherein determining the second database query involves determining a respective computing cost estimate of each of a plurality of alternative database queries including the second database query.

19. The one or more non-transitory computer readable media recited in claim 17 , wherein the second database query is configured to conduct a full scan of the subset of the one or more containers.

20. The one or more non-transitory computer readable media recited in claim 17 , wherein the second database query is configured to employ an index that is local to a designated container of the subset of the one or more containers.

Assignments (3)
CHANGE OF NAME Recorded Dec 26, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069791/0689 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2023
From: MATHUR, ROHITASHVA
To: SALESFORCE.COM, INC.
Reel/Frame 064851/0142 →
CHANGE OF NAME Recorded Sep 8, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 064896/0230 →
Continuity (3)
Continuation 17661840 · May 3, 2022
Continuation 16252433 · Jan 18, 2019
Related Publication 20230418682A1 · Dec 28, 2023
References Cited (53)
US 9323809B2 · Johnson et al. · 2016 [cited by applicant]
US 10031935B1 · Cole et al. · 2018 [cited by applicant]
US 11354168B2 · Mathur · 2022 [cited by applicant]
US 20090254601A1 · Moeller et al. · 2009 [cited by applicant]
US 20100030995A1 · Wang et al. · 2010 [cited by applicant]
US 20100281027A1 · Duan et al. · 2010 [cited by applicant]
US 20110196866A1 · Cooper · 2011 [cited by applicant]
US 20130111300A1 · Resch et al. · 2013 [cited by applicant]
US 20130166556A1 · Baeumges et al. · 2013 [cited by applicant]
US 20140032228A1 · Johri et al. · 2014 [cited by applicant]
US 20140108671A1 · Watson et al. · 2014 [cited by applicant]
US 20140129746A1 · Zhou et al. · 2014 [cited by applicant]
US 20140280075A1 · Huang et al. · 2014 [cited by applicant]
US 20150149509A1 · Leu et al. · 2015 [cited by applicant]
US 20150269239A1 · Swift et al. · 2015 [cited by applicant]
US 20150309999A1 · Ng et al. · 2015 [cited by applicant]
US 20160094624A1 · Mordani et al. · 2016 [cited by applicant]
US 20160094635A1 · Kannan et al. · 2016 [cited by applicant]
US 20160098448A1 · McShane · 2016 [cited by applicant]
US 20160253402A1 · Klots et al. · 2016 [cited by applicant]
US 20160335318A1 · Gerweck et al. · 2016 [cited by applicant]
US 20170016278A1 · Vasques et al. · 2017 [cited by applicant]
US 20170116278A1 · Baby · 2017 [cited by examiner]
US 20170177414A1 · Newbern · 2017 [cited by examiner]
US 20180025174A1 · Mathur et al. · 2018 [cited by applicant]
US 20180075125A1 · Stiel et al. · 2018 [cited by applicant]
US 20180107697A1 · Tariq et al. · 2018 [cited by applicant]
US 20180107711A1 · Tariq et al. · 2018 [cited by applicant]
US 20180107714A1 · Tariq et al. · 2018 [cited by applicant]
US 20180114033A1 · Mathur · 2018 [cited by applicant]
US 20180129691A1 · Mathur · 2018 [cited by applicant]
US 20180150533A1 · Mathur · 2018 [cited by applicant]
US 20180292998A1 · Skjolsvold et al. · 2018 [cited by applicant]
US 20190004863A1 · Mainali et al. · 2019 [cited by applicant]
US 20190012105A1 · Schreter · 2019 [cited by applicant]
US 20200233848A1 · Mathur · 2020 [cited by applicant]
US 20200233861A1 · Mathur · 2020 [cited by applicant]
US 20220261294A1 · Mathur · 2022 [cited by applicant]
WO 2018075839A1 · 2018 [cited by applicant]
U.S. Appl. No. 16/252,433, Final Office Action mailed Jul. 8, 2021, 15 pgs. [cited by applicant]
U.S. Appl. No. 16/252,433, Non Final Office Action mailed Jul. 8, 2021, 15 pgs. [cited by applicant]
U.S. Appl. No. 16/252,433, Non-Final Office Action mailed Jan. 25, 2021, 21 pgs. [cited by applicant]
U.S. Appl. No. 16/252,433, Non-Final Rejection, Aug. 26, 2020, 21 pgs. [cited by applicant]
U.S. Appl. No. 16/252,433, Notice of Allowance mailed Apr. 22, 2022, 9 pgs. [cited by applicant]
U.S. Appl. No. 16/252,448, Advisory Action mailed Apr. 27, 2021, 3 pgs. [cited by applicant]
U.S. Appl. No. 16/252,448, Final Office Action mailed Feb. 5, 2021, 24 pgs. [cited by applicant]
U.S. Appl. No. 16/252,448, Non-Final Office Action mailed Jul. 12, 2021, 23 pgs. [cited by applicant]
U.S. Appl. No. 16/252,448, Non-Final Rejection, Jul. 23, 2020, 19 pgs. [cited by applicant]
U.S. Appl. No. 16/252,454, Final Office Action mailed Jul. 30, 2021, 17 pgs. [cited by applicant]
U.S. Appl. No. 16/252,454, Non-Final Office Action mailed Jan. 27, 2021, 24 pgs. [cited by applicant]
U.S. Appl. No. 16/252,454, Non-Final Rejection, Sep. 4, 2020, 19 pgs. [cited by applicant]
U.S. Appl. No. 17/661,840, Non Final Office Action mailed Feb. 3, 2023, 35 pgs. [cited by applicant]
U.S. Appl. No. 17/661,840, Notice of Allowance mailed Aug. 16, 2023, 8 pgs. [cited by applicant]