IP Library › Granted Patent US 12,423,199
Granted Patent B2
US 12,423,199 · App. 18/329,043 · Granted Sep 23, 2025

Systems and methods for synchronizing between a source database cluster and a destination database cluster

Inventors: Ryan Chipman (Westwood, MA); Lingzhi Deng (Jersey City, NJ); Tim Fogarty (Amsterdam, NL); Max Jacob Hirschhorn (New York, NY); Samyukta Lanka (New York, NY); Judah Schvimer (New York, NY); Andrew Michalski Schwerin (Providence, RI); Randolph Tan (Astoria, NY); Mark Porter (Seattle, WA)
Assignee: MongoDB, Inc.
G06F11/2041G06F16/2365G06F16/2379G06F16/27G06F16/285
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,423,199
App. No.
18/329,043
Filed
Jun 5, 2023
Granted
Sep 23, 2025
Kind
B2
Art Unit
2168
USPC
707/634
Abstract

In some embodiments, a database cluster to cluster synchronization system may include multiple replicators coupled to a source database cluster and a destination database cluster, where the source and destination cluster may be shard clusters. Each of the multiple replicators may correspond to a respective subset of the source database cluster and configured to monitor changes of data on the respective subset of the source database cluster and translate the changes of data to one or more database operations to be performed on the destination cluster. The changes of data on the source database may be contained in respective change streams associated with each of the replicators.

Claims (63)

1. A system comprising:

at least one processor configured to execute one or more first operations to replicate one or more associated partitions of data from a source database cluster to a destination database cluster, to monitor a respective change stream comprising data indicative of a change of data in the one or more partitions associated with the replicator, and to execute one or more second operations to translate the change of data to one or more database operations to be performed to the destination database cluster;

wherein the execution of the one or more first operations to replicate associated one or more partitions of data is interleaved with the execution of one or more second operations to translate the change of data to one or more data base operations;

wherein each of the source database cluster and the destination database cluster is a shard cluster comprising multiple shard servers hosting multiple shards of data;

wherein the at least one processor is configured to:

replicate data on a respective subset of the source database cluster to the destination database cluster; and

replicate data from a first subset of the source database cluster to the destination database cluster at least partially in parallel with replicating data from a second subset of the source database cluster to the destination database cluster.

2. The system of claim 1 , wherein the at least one processor is configured to provide a second replication pathway, independent of a first replication architecture operating on the source database cluster.

3. The system of claim 2 , wherein the first replication architecture includes:

a primary node hosting data of the source cluster and secondary nodes hosting copies of the primary node data, wherein the primary node accepts and processes write operations against the hosted data of the source cluster, and maintains an operation log reflecting changes to the hosted data of the source cluster, and wherein the secondary nodes maintain consistency in the hosted copies of the primary node data base on executing operations from the operation log.

4. The system of claim 1 , wherein:

a first change stream corresponds to a first subset of shards in the source database cluster; and

a second change stream corresponds to a second subset of shards in the source database cluster, the second subset of shards being different from the first subset of shards.

5. The system of claim 1 , wherein:

the at least one processor is further configured to replicate indexes of data from the source database cluster while replicating the data from the source database cluster to the destination database cluster; and

the at least one processor is further configured to:

cause each of the first replicator and the second replicator to replicate the indexes as non-unique indexes; and

convert the non-unique index to unique indexes when replications of the plurality of replicators including the at least the first and second replicators are committed.

6. The system of claim 5 , wherein the at least one processor is further configured to:

determine whether a violation of indexes exists; and

in response to determining that a violation of indexes exists, output or cause to output a report comprising the violation on a user device.

7. The system of claim 1 , wherein the at least one processor is further configured to:

suspend operation of replicating data from the source database cluster to the destination database cluster; and

resume replicating data from the source database cluster to the destination database cluster at where the suspended operation of replicating left off.

8. The system of claim 1 , wherein the at least one processor is further configured to:

receive user command to reverse replication; and

reverse replication by replicating data from the destination database cluster to the source database cluster.

9. The system of claim 8 , wherein the at least one processor is further configured to:

determine whether replication of data from the source database cluster to the destination database cluster is committed before reversing replication; and

in response to determining that the replication of data from the source data cluster to the destination database cluster is committed, execute functions to reverse replication.

10. The system of claim 1 , wherein the at least one processor is further configured to:

perform initial replication of data from the source database cluster to the destination database cluster; and

after the initial replication of data from the source database cluster to the destination database cluster is completed, continue replicating data from the source database cluster to the destination database cluster based on subsequent data change on the source database cluster.

11. The system of claim 2 , wherein:

the destination database cluster comprises a last state for each document in the destination database cluster, the last state storing data about a most recently change to the document; and

the at least one processor is further configured to:

detect a change event to a document;

retrieve the last state associated with the document; and

determine whether to apply the change event to the document based on the last state and a time the change event occurred.

12. The system of claim 11 , wherein:

the at least one processor is further configured to, when applying a change to a document, update the last state for the document to which the change is applied.

13. A method for replicating data from a source database cluster to a destination database cluster with a plurality of replicators comprising:

causing each of the plurality of replicators to execute one or more first operations to replicate one or more associated partitions of data from the source database cluster to the destination database cluster,

to monitor a respective change stream comprising data indicative of a change of data in the one or more partitions associated with the replicator, and

to execute one or more second operations to translate the change of data to one or more database operations to be performed to the destination database cluster;

wherein the execution of the one or more first operations to replicate associated one or more partitions of data is interleaved with the execution of one or more second operations to translate the change of data to one or more data base operations; and

replicating data from a first subset of the source database cluster to the destination database cluster with a first replicator of the plurality of replicators; and

replicating data from a second subset of the source database cluster to the destination database cluster with a second replicator of the plurality of replicators at least partially in parallel with the replicating data from the first subset of the source database cluster to the destination database cluster with the first replicator of the plurality of replicators.

14. The method of claim 13 , further comprising:

providing a second replication pathway, independent of a first replication architecture operating on the source database cluster.

15. The method of claim 13 , further comprising:

replicating indexes of data from the source database cluster while replicating the data from the source database cluster to the destination database cluster; and

causing each of the first replicator and the second replicator to replicate the indexes as non-unique indexes; and

converting the non-unique index to unique indexes when replications of the plurality of replicators including the at least the first and second replicators are committed.

16. The method of claim 15 , further comprising:

determining whether a violation of indexes exists; and

in response to determining that a violation of indexes exists, outputting or causing to output a report comprising the violation on a user device.

17. The method of claim 13 , further comprising:

suspending operation of replicating data from the source database cluster to the destination database cluster; and

resuming replicating data from the source database cluster to the destination database cluster at where the suspended operation of replicating left off.

18. The method of claim 13 , further comprising:

receiving user command to reverse replication; and

reversing replication by replicating data from the destination database cluster to the source database cluster.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2026
From: CHIPMAN, RYAN; DENG, LINGZHI; FOGARTY, TIM; HIRSCHHORN, MAX JACOB; LANKA, SAMYUKTA; SCHVIMER, JUDAH; SCHWERIN, ANDREW MICHALSKI; TAN, RANDOLPH; PORTER, MARK
To: MONGODB, INC.
Reel/Frame 074037/0301 →
Continuity (3)
Provisional Application 63349336 · Jun 6, 2022
Provisional Application 63349392 · Jun 6, 2022
Related Publication 20230393958A1 · Dec 7, 2023
References Cited (44)
US 6122640A · Pereira · 2000 [cited by applicant]
US 6678882B1 · Hurley · 2004 [cited by applicant]
US 7603357B1 · Gourdol · 2009 [cited by applicant]
US 7933868B2 · Singh · 2011 [cited by examiner]
US 8072950B2 · Fan · 2011 [cited by applicant]
US 8352870B2 · Bailor · 2013 [cited by applicant]
US 8886667B2 · Goodman · 2014 [cited by examiner]
US 9251235B1 · Hurst · 2016 [cited by applicant]
US 9298792B2 · Ylinen · 2016 [cited by applicant]
US 9448789B2 · Mathur · 2016 [cited by applicant]
US 9529731B1 · Wallace et al. · 2016 [cited by applicant]
US 9552407B1 · Hurst · 2017 [cited by applicant]
US 9846733B2 · Dennehy · 2017 [cited by examiner]
US 10795777B1 · Goyal · 2020 [cited by examiner]
US 10956446B1 · Hurst · 2021 [cited by applicant]
US 11126505B1 · Vig · 2021 [cited by examiner]
US 11294935B2 · Stigsen · 2022 [cited by applicant]
US 11803568B1 · Jain · 2023 [cited by examiner]
US 20020023113A1 · Hsing et al. · 2002 [cited by applicant]
US 20020099728A1 · Lees et al. · 2002 [cited by applicant]
US 20030028683A1 · Yorke et al. · 2003 [cited by applicant]
US 20040148316A1 · Bridge, Jr. et al. · 2004 [cited by applicant]
US 20050055445A1 · Gupta et al. · 2005 [cited by applicant]
US 20050071195A1 · Cassel · 2005 [cited by applicant]
US 20060020570A1 · Wu · 2006 [cited by applicant]
US 20080027996A1 · Morris · 2008 [cited by applicant]
US 20080046400A1 · Shi · 2008 [cited by examiner]
US 20090210459A1 · Nair · 2009 [cited by applicant]
US 20090217274A1 · Corbin · 2009 [cited by examiner]
US 20090271696A1 · Bailor · 2009 [cited by applicant]
US 20110178985A1 · San Martin Arribas · 2011 [cited by examiner]
US 20140258255A1 · Merriman · 2014 [cited by applicant]
US 20160179642A1 · Cai · 2016 [cited by examiner]
US 20160342335A1 · Dey et al. · 2016 [cited by applicant]
US 20170075949A1 · Stefani et al. · 2017 [cited by applicant]
US 20170262521A1 · Cho · 2017 [cited by examiner]
US 20180316703A1 · Mesic · 2018 [cited by examiner]
US 20190057142A1 · Wang · 2019 [cited by examiner]
US 20190349426A1 · Smith · 2019 [cited by examiner]
US 20190354540A1 · Stigsen · 2019 [cited by applicant]
US 20200341861A1 · Ling · 2020 [cited by applicant]
US 20210026865A1 · He · 2021 [cited by applicant]
US 20230393958A1 · Chipman et al. · 2023 [cited by applicant]
US 20230394064A1 · Chipman et al. · 2023 [cited by applicant]