IP Library Granted Patent US 10,997,211
Granted Patent B2
US 10,997,211 · App. 16/013,706 · Granted May 4, 2021

Systems and methods for database zone sharding and API integration

Inventors: Dwight Merriman (New York, NY); Eliot Horowitz (New York, NY); Cory P. Mintz (Millstone Township, NJ); Cailin Anne Nelson (Boulder, CO); Akshay Kumar (New York, NY); David Lenox Storch (Brooklyn, NY); Charles William Swanson (New York, NY); Keith Bostic (Lincoln, MA); Michael Cahill (Summer Hill, AU); Dan Pasette (Brooklyn, NY); Mathias Benjamin Stearn (New York, NY); Geert Bosch (Brooklyn, NY)
Assignee: MongoDB, Inc.
G06F16/278
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,997,211
App. No.
16/013,706
Granted
May 4, 2021
Kind
B2
Abstract

Systems and methods are provided to enable control and placement of data repositories. In some embodiments, the system segments data into zones. A website, for example, may need to segment data according to location. In this example, a zone may be created for North America and another zone may be created for Europe. Data related to operations executed in North America, for example, can be placed in the North America zone and data related to transactions in Europe can be placed in the Europe zone. According to some embodiments, the system may use zones to accommodate a range of deployment scenarios.

Claims (69)

1. A database system comprising:

a plurality of shards storing a plurality of data items;

at least one processor configured to:

generate a plurality of zones including a first zone and a second zone, the generating comprising:

associating a first one of the plurality of shards with the first zone comprising mapping the first zone to a first range of key values; and

associating a second one of the plurality of shards with the second zone comprising mapping the second zone to a second range of key values;

mapping a first set of the plurality of data items to the first zone, comprising determining that each of the first set of data items has a shard key value within the first range;

in response to mapping the first set of data items to the first zone, storing the first set of data items in the first shard;

mapping a second set of the plurality of data items to the second zone, comprising determining that each of the second set of data items has a shard key value within the second range;

in response to mapping the second set of data items to the second zone, storing the second set of data items in the second shard;

receiving data indicative of (a) a modification of the first range of key values that modifies the first range of key values to a modified first range of key values, and (b) a third zone mapped to a third range of key values;

determining one or more of the data items of the first set of data items comprise a shard key value outside of the shortened first range of key values and within the third range of key values; and

mapping the determined one or more data items to the third zone.

2. The database system of claim 1 , wherein the at least one processor is configured to associate the first zone with a first datacenter and the second zone with a second datacenter.

3. The database system of claim 2 , wherein the first shard comprises a plurality of nodes and the at least one processor is configured to store a majority of the plurality of nodes in the first datacenter.

4. The database system of claim 1 , wherein the first range of key values and the second range of key values are mutually exclusive.

5. The database system of claim 1 , wherein the at least one processor is configured to: generate a first tag for the first zone and a second tag for the second zone; and

associate the first shard with the first tag and the second shard with the second tag.

6. The database system of claim 1 , wherein the at least one processor is configured to associate the first zone with a first geographic location and the second zone with a second geographic location.

7. The database system of claim 6 , further comprising a routing service, executed by the at least one processor, configured to:

map the first set of data items to the first zone in response to determining an association of the first set of data items with the first geographic location; and

map the second set of data items to the second zone in response to determining an association of the second set of data items with the second geographic location.

8. The database system of claim 1 , wherein the at least one processor is configured to associate the first zone with a first application and the second zone with a second application.

9. The database system of claim 1 , wherein the at least one processor is further configured to store the one or more data items in a third shard of the third zone.

10. A computer-implemented method of storing data in a database, the method comprising:

storing a plurality of data items in a plurality of shards;

generating a plurality of zones including a first zone and a second zone, the generating comprising:

associating a first of the plurality of shards with the first zone, comprising mapping the first zone to a first range of key values; and

associating a second one of the plurality of shards with the second zone, comprising mapping the second zone to a second range of key values;

mapping a first set of the plurality of data items to the first zone, comprising determining that each of the first set of data items has a shard key value within the first range;

in response to mapping the first set of data items to the first zone, storing the first set of data items in the first shard;

mapping a second set of the plurality of data items to the second zone, comprising determining that each of the second set of data items has a shard key value within the second range;

in response to mapping the second set of data items to the second zone, storing the second set of data items in the second shard;

receiving data indicative of (a) a modification of the first range of key values that modifies the first range of key values to a modified first range of key values, and (b) a third zone mapped to a third range of key values;

determining one or more of the data items of the first set of data items comprise a shard key value outside of the shortened first range of key values and within the third range of key values; and

mapping the determined one or more data items to the third zone.

11. The method of claim 10 , further comprising storing the one or more data items in a third shard of the third zone.

12. The method of claim 10 , further comprising routing a new data item for storage to the first shard in response to mapping the new data item to the first zone.

13. The method of claim 10 , further comprising associating the first zone with a first datacenter and the second zone with a second datacenter.

14. The method of claim 13 , further comprising:

storing a majority of nodes of the first shard in the first datacenter; and

storing the first set of data items in the first datacenter.

15. The method of claim 10 , further comprising:

generating the first range of key values for the first zone; and

generating the second range of key values for the second zone.

16. The method of claim 15 , further comprising generating the first range of key values mutually exclusive from the second range of key values.

17. The method of claim 10 , further comprising:

generating a first tag for the first zone and a second tag for the second zone;

mapping the first shard to the first tag; and

mapping the second shard to the second tag.

18. The method of claim 10 , further comprising:

routing a new data item for storage to the first shard in response to determining association of the new data item with a first geographic location; and

routing the new data item for storage to the second shard in response to determining association of the new data item with the second geographic location.

19. At least one non-transitory computer-readable storage medium storing instructions, the instructions, when executed by at least one processor, cause the at least one processor to perform a method comprising:

storing a plurality of data items in a plurality of shards;

generating a plurality of zones including a first zone and a second zone, the generating comprising:

associating a first of the plurality of shards with the first zone,

comprising mapping the first zone to a first range of key values; and

associating a second of the plurality of shards with the second zone, comprising mapping the second zone to a second range of key values;

mapping a first set of the plurality of data items to the first zone, comprising determining that each of the first set of data items has a shard key value within the first range;

in response to mapping the first set of data items to the first zone, storing the first set of data items in the first shard;

mapping a second set of the plurality of data items to the second zone, comprising determining that each of the second set of data items has a shard key value within the second range;

in response to mapping the second set of data items to the second zone, storing the second set of data items in the second shard;

receiving data indicative of (a) a modification of the first range of key values that modifies the first range of key values to a modified first range of key values, and (b) a third zone mapped to a third range of key values;

determining one or more of the data items of the first set of data items comprise a shard key value outside of the shortened first range of key values and within the third range of key values; and

mapping the determined one or more data items to the third zone.

20. The method of claim 19 , further comprising:

generating the first range of key values for the first zone; and

generating the second range of key values for the second zone.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2020
From: MERRIMAN, DWIGHT; MINTZ, CORY P.; NELSON, CAILIN ANNE; KUMAR, AKSHAY; STORCH, DAVID LENOX; SWANSON, CHARLES WILLIAM; BOSTIC, KEITH; CAHILL, MICHAEL; PASETTE, DAN; STEARN, MATHIAS BENJAMIN; BOSCH, GEERT
To: MONGODB, INC.
Reel/Frame 054320/0865 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2020
From: HOROWITZ, ELIOT
To: MONGODB, INC.
Reel/Frame 054320/0970 →
Continuity (21)
Continuation In Part 15654590 · Jul 19, 2017
Continuation 13078104 · Apr 1, 2011
Continuation 16013706
Continuation In Part 15605391 · May 25, 2017
Continuation In Part 15042297 · Feb 12, 2016
Continuation 13951987 · Jul 26, 2013
Continuation In Part 13794710 · Mar 11, 2013
Continuation In Part 14672901 · Mar 30, 2015
Continuation 13794710 · Mar 11, 2013
Continuation 16013706
Continuation In Part 15074987 · Mar 18, 2016
Continuation 14064705 · Oct 28, 2013
Continuation 12977563 · Dec 23, 2010
Continuation 16013706
Continuation In Part 14992225 · Jan 11, 2016
Provisional Application 62522222 · Jun 20, 2017
Provisional Application 62341511 · May 25, 2016
Provisional Application 62341490 · May 25, 2016
Provisional Application 61676188 · Jul 26, 2012
Provisional Application 62232979 · Sep 25, 2015
Related Publication 20180300385A1 · Oct 18, 2018
Cited By (1)
US 12,373,456