US 12,248,495 B2
Systems and methods for flexible synchronization
Louis DiPalma, Long Island City, NY (US); Ian Ward, Brooklyn, NY (US); Michael Patrick O'Brien, New York, NY (US); Tyler Kaye, New York, NY (US); Sudarshan Muralidhar, Brooklyn, NY (US); Jonathan Reams, New York, NY (US); Alexander Swane Stigsen, Allerød (DK); and Kirollos Morkos, Haworth, NJ (US)
Assigned to MongoDB, Inc., New York, NY (US)
Filed by MongoDB, Inc., New York, NY (US)
Filed on Jun. 5, 2023, as Appl. No. 18/329,087.
Application 18/329,087 is a continuation in part of application No. 17/712,711, filed on Apr. 4, 2022, granted, now 11,748,378.
Application 17/712,711 is a continuation of application No. 16/412,264, filed on May 14, 2019, granted, now 11,294,935.
Claims priority of provisional application 63/349,533, filed on Jun. 6, 2022.
Claims priority of provisional application 62/671,931, filed on May 15, 2018.
Prior Publication US 2023/0315757 A1, Oct. 5, 2023
Int. Cl. G06F 17/00 (2019.01); G06F 7/00 (2006.01); G06F 7/14 (2006.01); G06F 16/27 (2019.01)
CPC G06F 16/275 (2019.01) [G06F 7/14 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A database system comprising:
a database having a dynamic schema; and
at least one processor configured to:
generate, at a first client device, a first changeset that is representative of an operation on a data object in a database;
transmit, from the first client device and to one or more servers, a synchronization request for synchronizing the database with one or more changesets generated by a second client device;
receive, at the first client device and from the one or more servers in response to the synchronization request, a second changeset that is representative of an operation performed by the second client device on the data object, wherein the database is shared between the first client device and the second client device; and
merge, at the first client device, the first changeset and the second changeset to update the data object, wherein the merging is performed based on data received from a plurality of the one or more servers operating in parallel to each other, the merging comprising:
determining a type of operation to which the first changeset corresponds and a type of operation to which the second changeset corresponds;
responsive to determining that at least one of the first changeset or the second changeset corresponds to a first type of operation, applying one of the first changeset or the second changeset based on a comparison of a first timestamp associated with the first changeset and a second timestamp associated with the second changeset; and
responsive to determining that at least one of the first changeset or the second changeset correspond to a second type of operation, applying one of the first changeset or the second changeset irrespective of the first timestamp associated with the first changeset and the second timestamp associated with the second changeset.