Method and system for efficiently replicating data in non-relational databases
First Claim
1. A method of replicating data for a distributed database between a plurality of instances, each instance comprising one or more server computers with memory and one or more processors, the method comprising:
- identifying a first instance of the distributed database at a first geographic location;
identifying a second instance of the distributed database at a second geographic location;
tracking changes to the distributed database at the first instance by storing deltas, each delta having a row identifier that identifies a piece of data modified, a sequence identifier that specifies an order in which the delta is applied to the second instance, and an instance identifier that specifies an instance where the delta was created;
determining which deltas are to be sent to the second instance using a second egress map at the first instance, wherein the second egress map specifies which combinations of row identifier and sequence identifier have been acknowledged as received at the second instance;
building a second transmission matrix for the second instance that identifies deltas that have not yet been acknowledged as received at the second instance;
transmitting deltas identified in the second transmission matrix to the second instance;
receiving acknowledgement that transmitted deltas have been incorporated in the second instance; and
updating the second egress map to indicate acknowledged deltas.
2 Assignments
0 Petitions
Accused Products
Abstract
A method replicates data between instances of a distributed database. The method identifies at least two instances of the database at distinct geographic locations. The method tracks changes to the database by storing deltas. Each delta has a row identifier that identifies the piece of data modified, a sequence identifier that specifies the order in which the deltas are applied to the data, and an instance identifier that specifies where the delta was created. The method determines which deltas to send using an egress map that specifies which combinations of row identifier and sequence identifier have been acknowledged as received at other instances. The method builds a transmission matrix that identifies deltas that have not yet been acknowledged as received. The method then transmits deltas identified in the transmission matrix. After receiving acknowledgement that transmitted deltas have been incorporated into databases at other instances, the method updates the egress map.
90 Citations
13 Claims
-
1. A method of replicating data for a distributed database between a plurality of instances, each instance comprising one or more server computers with memory and one or more processors, the method comprising:
-
identifying a first instance of the distributed database at a first geographic location; identifying a second instance of the distributed database at a second geographic location; tracking changes to the distributed database at the first instance by storing deltas, each delta having a row identifier that identifies a piece of data modified, a sequence identifier that specifies an order in which the delta is applied to the second instance, and an instance identifier that specifies an instance where the delta was created; determining which deltas are to be sent to the second instance using a second egress map at the first instance, wherein the second egress map specifies which combinations of row identifier and sequence identifier have been acknowledged as received at the second instance; building a second transmission matrix for the second instance that identifies deltas that have not yet been acknowledged as received at the second instance; transmitting deltas identified in the second transmission matrix to the second instance; receiving acknowledgement that transmitted deltas have been incorporated in the second instance; and updating the second egress map to indicate acknowledged deltas. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A server system, comprising a plurality of servers, each server having:
-
one or more processors; memory; and one or more programs stored in the memory for execution by the one or more processors, the one or more programs comprising instructions for; identifying a first instance of the distributed database at a first geographic location; identifying a second instance of the distributed database at a second geographic location; tracking changes to the distributed database at the first instance by storing deltas, each delta having a row identifier that identifies a piece of data modified, a sequence identifier that specifies an order in which the delta is applied to the second instance, and an instance identifier that specifies an instance where the delta was created; determining which deltas are to be sent to the second instance using a second egress map at the first instance, wherein the second egress map specifies which combinations of row identifier and sequence identifier have been acknowledged as received at the second instance; building a second transmission matrix for the second instance that identifies deltas that have not yet been acknowledged as received at the second instance; transmitting deltas identified in the second transmission matrix to the second instance; receiving acknowledgement that transmitted deltas have been incorporated in the second instance; and updating the second egress map to indicate acknowledged deltas. - View Dependent Claims (9, 10)
-
-
11. A computer readable storage medium storing one or more programs configured for execution by a server computer system having one or more processors and memory storing one or more programs for execution by the one or more processors, the one or more programs comprising instructions to:
-
identify a first instance of the distributed database at a first geographic location; identify a second instance of the distributed database at a second geographic location; track changes to the distributed database at the first instance by storing deltas, each delta having a row identifier that identifies a piece of data modified, a sequence identifier that specifies an order in which the delta is applied to the second instance, and an instance identifier that specifies an instance where the delta was created; determine which deltas are to be sent to the second instance using a second egress map at the first instance, wherein the second egress map specifies which combinations of row identifier and sequence identifier have been acknowledged as received at the second instance; build a second transmission matrix for the second instance that identifies deltas that have not yet been acknowledged as received at the second instance; transmit deltas identified in the second transmission matrix to the second instance; receive acknowledgement that transmitted deltas have been incorporated in the second instance; and update the second egress map to indicate acknowledged deltas. - View Dependent Claims (12, 13)
-
Specification