IP Library Granted Patent US 12,169,506
Granted Patent B1
US 12,169,506 · App. 18/499,467 · Granted Dec 17, 2024

Utilizing asynchronous double-writes to migrate data between databases

Inventors: Jiaqi Guo (Spring, TX); Valentina Josefina Trujillo Di Base (Vancouver, CA); Shigeki Hirose (Des Moines, WA)
Assignee: Chime Financial, Inc.
G06F16/275G06F16/219
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,169,506
App. No.
18/499,467
Granted
Dec 17, 2024
Kind
B1
Abstract

The present disclosure relates to systems, non-transitory computer-readable media, and methods for utilizing asynchronous double-writes to migrate data from a primary database to a secondary database. In particular, in one or more embodiments, the disclosed systems, upon receiving a work unit, write data to a primary database and generate a trigger to asynchronously write, by a sync record service, the data to a secondary database. In some embodiments, the disclosed systems reverse the direction of the asynchronous double-writes so that, upon receiving additional work units, the disclosed systems write, by the sync record service, additional data to the secondary database and generate a trigger to asynchronously write additional data to the primary database.

Claims (77)

1. A computer-implemented method comprising:

establishing a database system comprising a primary database that hosts a plurality of data tables, wherein the database system comprises an initial sync direction between a first data table in the primary database and a second data table in a secondary database;

receiving a work unit that generates a write command of a unit of data to the first data table in the primary database, wherein receiving the work unit generates a trigger to schedule, with a sync record service, an asynchronous write command of the unit of data to the second data table in the secondary database based on the initial sync direction;

writing, by the sync record service, the unit of data to the second data table in the secondary database based on the asynchronous write command causing the unit of data to be synchronized between the first data table in the primary database and the second data table in the secondary database;

changing the initial sync direction to a reversed sync direction based on receiving a reverse sync direction command;

receiving an additional work unit that generates an additional write command of an additional unit of data to the second data table in the secondary database, wherein receiving the additional work unit generates an additional trigger to schedule, with the sync record service, an additional asynchronous write command of the additional unit of data to the first data table in the primary database based on the reversed sync direction; and

writing, by the sync record service, the additional unit of data to the primary database based on the additional asynchronous write command causing the unit of data to be synchronized between the second data table in the secondary database and the first data table in the primary database.

2. The computer-implemented method of claim 1 , further comprising:

modifying the database system by removing a command to generate triggers to schedule, with the sync record service, asynchronous write commands when receiving work units; and

receiving a further work unit that generates a further write command of a further unit of data to the second data table in the secondary database.

3. The computer-implemented method of claim 1 , further comprising:

changing the initial sync direction to the reversed sync direction for a first client device associated with a first user identification based on receiving the reverse sync direction command for the first client device; and

receiving the additional work unit from the first client device that generates the additional write command of the additional unit of data to the second data table in the secondary database, wherein receiving the additional work unit from the first client device generates the additional trigger to schedule, with the sync record service, the additional asynchronous write command of the additional unit of data to the first data table in the primary database based on the reversed sync direction for the first client device.

4. The computer-implemented method of claim 3 , further comprising:

identifying an error with the secondary database based on utilizing the secondary database to recall data; and

changing, based on receiving an additional reverse sync direction command for the first client device, the reversed sync direction to the initial sync direction.

5. The computer-implemented method of claim 1 , further comprising:

determining, based on a timestamp associated with the unit of data in the first data table in the primary database, whether the unit of data in the first data table in the primary database is a newest version of the unit of data; and

based on determining that the unit of data in the first data table in the primary database is the newest version of the unit of data, writing, by the sync record service, the unit of data to the second data table in the secondary database.

6. The computer-implemented method of claim 1 , wherein writing, by the sync record service, the unit of data to the secondary database based on the asynchronous write command further comprises:

identifying, based on a timestamp associated with the unit of data in the first data table in the primary database, that the unit of data in the first data table in the primary database is an older version of the unit of data;

determining to not write the unit of data to the second data table in the secondary database;

identifying, after a threshold amount of time and based on an updated timestamp associated with the unit of data in the first data table in the primary database, that the unit of data in the first data table in the primary database is an updated version of the unit of data; and

writing, by the sync record service, the unit of data to the second data table in the secondary database.

7. The computer-implemented method of claim 1 , further comprising:

identifying units of data in the first data table in the primary database comprising a timestamp older than the unit of data;

identifying that the units of data in the first data table in the primary database comprising a time stamp older than the unit of data are not in the second data table in the secondary database; and

backfilling the second data table in the secondary database by writing the units of data that comprise a timestamp older than the unit of data from the first data table in the primary database to the second data table in the secondary database.

8. The computer-implemented method of claim 1 , further comprising:

receiving a reverse sync direction command by receiving, from a server of the database system, an instruction to change the initial sync direction to the reversed sync direction for a set of client devices; and

based on receiving the instruction, changing the initial sync direction to the reversed sync direction for the set of client devices.

9. The computer-implemented method of claim 1 , further comprising:

receiving a reverse sync direction command by receiving, from a server of the database system, an instruction to change the initial sync direction to the reversed sync direction for a set of client devices at a specified time; and

changing the initial sync direction to the reversed sync direction for the set of client devices at the specified time.

10. A non-transitory computer-readable medium storing instructions that, when executed by at least one processor, cause a computer system to:

establish a database system comprising a primary database that hosts a plurality of data tables, wherein the database system comprises an initial sync direction between a first data table in the primary database and a second data table in a secondary database;

receive a work unit that generates a write command of a unit of data to the first data table in the primary database, wherein receiving the work unit generates a trigger to schedule, with a sync record service, an asynchronous write command of the unit of data to the second data table in the secondary database based on the initial sync direction;

write, by the sync record service, the unit of data to the second data table in the secondary database based on the asynchronous write command causing the unit of data to be synchronized between the first data table in the primary database and the second data table in the secondary database;

change the initial sync direction to a reversed sync direction based on receiving a reverse sync direction command;

receive an additional work unit that generates an additional write command of an additional unit of data to the second data table in the secondary database, wherein receiving the additional work unit generates an additional trigger to schedule, with the sync record service, an additional asynchronous write command of the additional unit of data to the first data table in the primary database based on the reversed sync direction; and

write, by the sync record service, the additional unit of data to the primary database based on the additional asynchronous write command causing the unit of data to be synchronized between the second data table in the secondary database and the first data table in the primary database.

11. The non-transitory computer-readable medium of claim 10 , further comprising instructions that, when executed by the at least one processor, cause the computer system to receive a reverse sync direction command by receiving an instruction to utilize a switch to change the initial sync direction to a reversed sync direction.

12. The non-transitory computer-readable medium of claim 10 , further comprising instructions that, when executed by the at least one processor, cause the computer system to:

change, based on receiving the reverse sync direction command for a first client device associated with a first user identification, the initial sync direction to a reversed sync direction; and

receive the additional work unit from the first client device that generates the additional write command of the additional unit of data to the second data table in the secondary database, wherein receiving the additional work unit from the first client device generates the additional trigger to schedule, with the sync record service, the additional asynchronous write command of the additional unit of data to the first data table in the primary database based on the reversed sync direction for the first client device.

13. The non-transitory computer-readable medium of claim 12 , further comprising instructions that, when executed by the at least one processor, cause the computer system to:

identify an error with the secondary database based on utilizing the secondary database to recall data; and

change, based on receiving an additional reverse sync direction command for the first client device, the reversed sync direction to the initial sync direction.

14. The non-transitory computer-readable medium of claim 12 , further comprising instructions that, when executed by the at least one processor, cause the computer system to:

receive a further work unit from a second client device that generates a further write command of a further unit of data to the first data table in the primary database, wherein receiving the further work unit generates a further trigger to schedule, with the sync record service, an asynchronous write command of the further unit of data to the second data table in the secondary database based on the initial sync direction; and

write, by the sync record service, the further unit of data to the second data table in the secondary database based on the asynchronous write command of the further unit of data to the second data table in the secondary database.

15. The non-transitory computer-readable medium of claim 12 , further comprising instructions that, when executed by the at least one processor, cause the computer system to:

determine, based on a timestamp associated with the unit of data in the first data table in the primary database, whether the unit of data in the first data table in the primary database is a newest version of the unit of data; and

based on determining that the unit of data in the first data table in the primary database is the newest version of the unit of data, write, by the sync record service, the unit of data to the second data table in the secondary database.

16. A system comprising:

at least one processor; and

at least one non-transitory computer-readable storage medium storing instructions that, when executed by the at least one processor, cause the system to:

establish a database system comprising a primary database that hosts a plurality of data tables, wherein the database system comprises an initial sync direction between a first data table in the primary database and a second data table in a secondary database;

receive a work unit that generates a write command of a unit of data to the first data table in the primary database, wherein receiving the work unit generates a trigger to schedule, with a sync record service, an asynchronous write command of the unit of data to the second data table in the secondary database based on the initial sync direction;

write, by the sync record service, the unit of data to the second data table in the secondary database based on the asynchronous write command causing the unit of data to be synchronized between the first data table in the primary database and the second data table in the secondary database;

change the initial sync direction to a reversed sync direction based on receiving a reverse sync direction command;

receive an additional work unit that generates an additional write command of an additional unit of data to the second data table in the secondary database, wherein receiving the additional work unit generates an additional trigger to schedule, with the sync record service, an additional asynchronous write command of the additional unit of data to the first data table in the primary database based on the reversed sync direction; and

write, by the sync record service, the additional unit of data to the primary database based on the additional asynchronous write command causing the unit of data to be synchronized between the second data table in the secondary database and the first data table in the primary database.

17. The system of claim 16 , further comprising instructions that, when executed by the at least one processor, cause the system to:

receive a reverse sync direction command by receiving, from a server of the database system, an instruction to change the initial sync direction to the reversed sync direction for a set of client devices; and

based on receiving the instruction, changing the initial sync direction to the reversed sync direction for the set of client devices.

18. The system of claim 16 , further comprising instructions that, when executed by the at least one processor, cause the system to:

receive a reverse sync direction command by receiving, from a server of the database system, an instruction to change the initial sync direction to the reversed sync direction for a set of client devices at a specified time; and

changing the initial sync direction to the reversed sync direction for the set of client devices at the specified time.

19. The system of claim 16 , further comprising instructions that, when executed by the at least one processor, cause the system to:

identify that the unit of data exists in the first data table in the primary database and the second data table in the secondary database;

based on identifying that the unit of data exists in the first data table in the primary database and the second data table in the secondary database, identify that a first timestamp associated with the unit of data in the first data table in the primary database matches a second timestamp associated with the unit of data in the secondary database;

identify, after a threshold amount of time, that the first timestamp associated with the unit of data in the first data table in the primary database and the second timestamp associated with the unit of data in the second data table in the secondary database still match; and

based on identifying that the first timestamp associated with the unit of data in the first data table in the primary database and the second timestamp associated with the unit of data in the second data table in the secondary database still match after the threshold amount of time, write, by the sync record service, the unit of data to the second data table in the secondary database.

20. The system of claim 16 , further comprising instructions that, when executed by the at least one processor, cause the system to:

modify the database system by removing a command to generate triggers to schedule, with the sync record service, asynchronous write commands when receiving work units; and

receive a further work unit that generates a further write command of a further unit of data to the second data table in the secondary database.

Assignments (2)
SECURITY AGREEMENT Recorded Mar 31, 2025
From: CHIME FINANCIAL, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 070689/0813 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2023
From: GUO, JIAQI; TRUJILLO DI BASE, VALENTINA JOSEFINA; HIROSE, SHIGEKI
To: CHIME FINANCIAL, INC.
Reel/Frame 065858/0001 →