IP Library Granted Patent US 11,650,841
Granted Patent B2
US 11,650,841 · App. 17/247,059 · Granted May 16, 2023

Data mover

Inventor: Kamil Bay (Rogers, AR)
Assignee: Walmart Apollo, LLC
G06F9/45558G06F9/451G06F9/485G06F16/215G06F16/2282G06F16/2343G06F16/27G06F2009/45583G06F2009/45591
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 11,650,841
App. No.
17/247,059
Granted
May 16, 2023
Kind
B2
Abstract

Systems and methods for data replication. A data processing service can present a user interface configured to receive a data fusion algorithm from a user, and a request to execute a job, each job including instructions to copy data from one of a plurality of source databases to one of a plurality of target databases, and can present a plurality of virtual machines, each virtual machine comprising: a processing unit configured to attempt to start the job requested by the user, when the job can be started, lock the job from the rest of the plurality of virtual machines, and execute the job according to the data fusion algorithm using a random access memory (RAM) memory bucket.

Claims (78)

1. A system for data replication, the system comprising:

computing hardware of at least one processor and memory operably coupled to the at least one processor; and

instructions that, when executed on the computing hardware, cause the computing hardware to implement:

a user interface configured to receive a data fusion algorithm from a user, and a request to execute a job from a plurality of jobs, each of the jobs including instructions to copy data from one of a plurality of source databases to one of a plurality of target databases, and

a plurality of virtual machines, each virtual machine comprising:

a processing unit configured to:

 attempt to start the job requested by the user,

when the job can be started, lock the job from the rest of the plurality of virtual machines, and

execute the job according to the data fusion algorithm using a random access memory (RAM) memory bucket.

2. The system of claim 1 , wherein the processing unit is further configured to:

parse the data fusion algorithm into a plurality of steps;

validate the plurality of steps; and

when an error is determined in the validation of one of the plurality of steps, recommend an alternative step.

3. The system of claim 2 , wherein the plurality of steps are saved on the virtual machine as a binary object.

4. The system of claim 2 , wherein the error is a missing table on the target database and the alternative step is a suggested alternative table.

5. The system of claim 1 , wherein each virtual machine further comprises:

a scheduling unit configured to monitor job status by checking the status of the plurality of jobs and presenting the status to the user through the user interface.

6. The system of claim 5 , wherein the scheduling unit is configured to monitor job status every second.

7. The system of claim 5 , wherein the scheduling unit is further configured assign overdue jobs to another of the plurality of virtual machines based on the monitoring of job status.

8. The system of claim 1 , wherein the processing unit is further configured to:

receive a result set object for the job;

convert the result set object from a source database datatype to a target database datatype; and

write the result set object to the target database in the target database datatype.

9. The system of claim 1 , wherein the processing unit is further configured to:

parse the data fusion algorithm into a plurality of steps;

determine whether a first step in the plurality of steps requires user confirmation;

when the first step requires user confirmation, present a first step confirmation to the user through the user interface and receive a first step confirmation from the user; and

execute the first step.

10. The system of claim 1 , wherein the processing unit is further configured to:

read a row from the source database;

determine if the target database is executing a batch write;

when the target database is executing a batch write, add the row to the memory bucket;

when the target database is not executing a batch write, determine if the memory bucket is empty;

when the memory bucket is not empty, add the row to the memory bucket; and

when the memory bucket is empty, add the row to the target batch write.

11. A method of data replication, the method comprising:

receiving, through a graphical user interface from a user, a data fusion algorithm and a request to execute a job from a plurality of jobs, each of the jobs including instructions to copy data from one of a plurality of source databases to one of a plurality of target databases;

presenting a plurality of virtual machines, each virtual machine configured with a processing unit;

attempting to start the job requested by the user using one of the plurality of virtual machines;

when the job can be started, locking the job from the rest of the plurality of virtual machines, and

executing the job according to the data fusion algorithm using a random access memory (RAM) memory bucket.

12. The method of claim 11 , further comprising:

parsing the data fusion algorithm into a plurality of steps;

validating the plurality of steps; and

when an error is determined in the validation of one of the plurality of steps, recommending an alternative step.

13. The method of claim 11 , further comprising:

receiving a result set object for the job;

converting the result set object from a source database datatype to a target database datatype; and

writing the result set object to the target database in the target database datatype.

14. The method of claim 11 , further comprising:

parsing the data fusion algorithm into a plurality of steps;

determining whether a first step in the plurality of steps requires user confirmation;

when the first step requires user confirmation, presenting a first step confirmation to the user through the user interface and receiving a first step confirmation from the user; and

executing the first step.

15. The method of claim 11 , further comprising:

reading a row from the source database;

determining if the target database is executing a batch write;

when the target database is executing a batch write, adding the row to the memory bucket;

when the target database is not executing a batch write, determining if the memory bucket is empty;

when the memory bucket is not empty, adding the row to the memory bucket; and

when the memory bucket is empty, adding the row to a target batch write.

16. A method of optimized communication between a source database and a target database, the method comprising:

generating an optimized timeslot during a read-write operation between the source database and the target database by:

reading a first result set of data from the source database,

writing the first result set of data to the target database using a direct push,

while writing the first result set of data to the target database, reading a second result set of data from the source database.

17. The method of claim 16 , further comprising presenting a memory bucket and storing the second result set of data in the memory bucket, wherein the memory bucket is an array of objects in random access memory (RAM).

18. The method of claim 17 , further comprising:

writing the second result set of data from the memory bucket to the target database using a direct push; and

while writing second result set of data from the memory bucket to the target database, reading a third result set of data from the source database.

19. The method of claim 18 , wherein reading the second result set of data is conducted at a maximum read speed allowed by the source database, and writing the second result set of data is conducted at a maximum write speed allowed by the target database.

20. The method of claim 17 , wherein reading the second result set of data comprises:

reading a row from the source database;

determining if the target database is executing a batch write;

when the target database is executing a batch write, adding the row to the memory bucket;

when the target database is not executing a batch write, determining if the memory bucket is empty;

when the memory bucket is not empty, adding the row to the memory bucket; and

when the memory bucket is empty, adding the row to the target batch write method.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2020
From: BAY, KAMIL
To: WALMART APOLLO, LLC
Reel/Frame 054471/0175 →
Continuity (2)
Provisional Application 62940286 · Nov 26, 2019
Related Publication 20210157629A1 · May 27, 2021