IP Library Granted Patent US 10,067,999
Granted Patent B2
US 10,067,999 · App. 15/704,414 · Granted Sep 4, 2018

High-performance database replication systems and methods

Inventors: Ning Shi (Acton, MA); Walter Weiss (Chelmsford, MA); Yang Lu (Woburn, MA); Rui Shen (Burlington, MA); Manju James (Lexington, MA)
Assignee: VoltDB, Inc.
G06F17/30578G06F17/30368
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,067,999
App. No.
15/704,414
Granted
Sep 4, 2018
Kind
B2
Abstract

Database replication is performed by tracking sequence numbers associated with binary change logs. At a producer cluster, a binary change log is generated based on a write transaction made to a database partition in the producer cluster. Included with the binary change log is a sequence number corresponding to the write transaction. The binary change log is transmitted from the producer cluster to a consumer cluster, where a determination is made whether to apply the binary change log based on the included sequence number. The binary change log is then applied to a database partition in the consumer cluster. The sequence number is stored at the consumer cluster by combining the sequence number with a numerical range having a first number and a second number, where the second number has a value corresponding to the most recent binary change log applied to the database partition in the consumer cluster.

Claims (52)

1. A method of performing database replication, the method comprising:

generating, at a producer cluster, a binary change log based on a write transaction made to a database partition in the producer cluster;

including with the binary change log a sequence number corresponding to the write transaction;

transmitting the binary change log from the producer cluster to a consumer cluster;

determining, at the consumer cluster, whether to apply the binary change log based on the sequence number included with the binary change log;

applying the binary change log to a database partition in the consumer cluster; and

storing, at the consumer cluster, the sequence number by combining the sequence number with a numerical range comprising a first number and a second number, the second number comprising a value corresponding to a most recent binary change log applied to the database partition in the consumer cluster, wherein combining the sequence number with the numerical range comprises:

determining that the sequence number consecutively follows the second number, and replacing the second number with the sequence number; or

determining that the sequence number does not consecutively follow the second number, and storing at the consumer cluster a second numerical range comprising the sequence number.

2. The method of claim 1 , wherein including with the binary change log a sequence number corresponding to the write transaction comprises increasing a previous sequence number associated with the database partition in the producer cluster.

3. The method of claim 1 , wherein determining whether to apply the binary change log comprises determining, based on the sequence number included with the binary change log, whether the binary change log has already been applied to the database partition in the consumer cluster.

4. The method of claim 1 , wherein the first number comprises a value corresponding to an earliest binary change log applied to the database partition in the consumer cluster.

5. The method of claim 1 , wherein the first number comprises a value indicating that all binary change logs, from an earliest binary change log created for the database partition in the producer cluster to the most recent binary change log, have been applied to the database partition in the consumer cluster.

6. The method of claim 1 , further comprising:

receiving, for each database partition in a plurality of database partitions in the consumer cluster, a numerical range of sequence numbers representing binary change logs applied to the respective database partition;

determining, based on the received numerical ranges, which binary change logs were applied to the consumer cluster; and

sending a request to the producer cluster, by the consumer cluster, for one or more binary change logs that were not applied to one or more database partitions in the consumer cluster.

7. The method of claim 1 , wherein the producer cluster comprises a first topology and the consumer cluster comprises a second, different topology, the method further comprising:

receiving, at the consumer cluster, a plurality of binary change logs associated with a first database partition in the producer cluster, each of the binary change logs including a different sequence number;

applying the plurality of binary change logs to a plurality of database partitions in the consumer cluster; and

for each applied binary change log, storing, at the consumer cluster, the sequence number for that binary change log in a respective numerical range associated with the database partition in the consumer cluster to which that binary change log was applied.

8. The method of claim 7 , further comprising:

receiving the numerical ranges associated with the database partitions in the consumer cluster;

merging the numerical ranges to form at least one merged numerical range representing the plurality of binary change logs applied to the database partitions; and

identifying, based on the at least one merged numerical range, which sequence numbers and corresponding binary logs are missing with respect to the first database partition in the producer cluster.

9. A system for performing database replication, the system comprising:

at least one memory for storing computer-executable instructions; and

at least one processor for executing the instructions stored on the at least one memory, wherein execution of the instructions programs the at least one processor to perform operations comprising:

generating, at a producer cluster, a binary change log based on a write transaction made to a database partition in the producer cluster;

including with the binary change log a sequence number corresponding to the write transaction;

transmitting the binary change log from the producer cluster to a consumer cluster;

determining, at the consumer cluster, whether to apply the binary change log based on the sequence number included with the binary change log;

applying the binary change log to a database partition in the consumer cluster; and

storing, at the consumer cluster, the sequence number by combining the sequence number with a numerical range comprising a first number and a second number, the second number comprising a value corresponding to a most recent binary change log applied to the database partition in the consumer cluster, wherein combining the sequence number with the numerical range comprises:

determining that the sequence number consecutively follows the second number, and replacing the second number with the sequence number; or

determining that the sequence number does not consecutively follow the second number, and storing at the consumer cluster a second numerical range comprising the sequence number.

10. The system of claim 9 , wherein including with the binary change log a sequence number corresponding to the write transaction comprises increasing a previous sequence number associated with the database partition in the producer cluster.

11. The system of claim 9 , wherein determining whether to apply the binary change log comprises determining, based on the sequence number included with the binary change log, whether the binary change log has already been applied to the database partition in the consumer cluster.

12. The system of claim 9 , wherein the first number comprises a value corresponding to an earliest binary change log applied to the database partition in the consumer cluster.

13. The system of claim 9 , wherein the first number comprises a value indicating that all binary change logs, from an earliest binary change log created for the database partition in the producer cluster to the most recent binary change log, have been applied to the database partition in the consumer cluster.

14. The system of claim 9 , wherein the operations further comprise:

receiving, for each database partition in a plurality of database partitions in the consumer cluster, a numerical range of sequence numbers representing binary change logs applied to the respective database partition;

determining, based on the received numerical ranges, which binary change logs were applied to the consumer cluster; and

sending a request to the producer cluster, by the consumer cluster, for one or more binary change logs that were not applied to one or more database partitions in the consumer cluster.

15. The system of claim 9 , wherein the producer cluster comprises a first topology and the consumer cluster comprises a second, different topology, and wherein the operations further comprise:

receiving, at the consumer cluster, a plurality of binary change logs associated with a first database partition in the producer cluster, each of the binary change logs including a different sequence number;

applying the plurality of binary change logs to a plurality of database partitions in the consumer cluster; and

for each applied binary change log, storing, at the consumer cluster, the sequence number for that binary change log in a respective numerical range associated with the database partition in the consumer cluster to which that binary change log was applied.

16. The system of claim 15 , wherein the operations further comprise:

receiving the numerical ranges associated with the database partitions in the consumer cluster;

merging the numerical ranges to form at least one merged numerical range representing the plurality of binary change logs applied to the database partitions; and

identifying, based on the at least one merged numerical range, which sequence numbers and corresponding binary logs are missing with respect to the first database partition in the producer cluster.

Assignments (2)
CHANGE OF NAME Recorded Mar 21, 2022
From: VOLTDB, INC.
To: VOLT ACTIVE DATA, INC.
Reel/Frame 059452/0470 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2017
From: SHI, NING; WEISS, WALTER; LU, YANG; SHEN, RUI; JAMES, MANJU
To: VOLTDB, INC.
Reel/Frame 043769/0932 →
Continuity (2)
Provisional Application 62406612 · Oct 11, 2016
Related Publication 20180101589A1 · Apr 12, 2018