IP Library Granted Patent US 10,282,433
Granted Patent B1
US 10,282,433 · App. 14/943,702 · Granted May 7, 2019

Management of database migration

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,282,433
App. No.
14/943,702
Granted
May 7, 2019
Kind
B1
Abstract

Methods, systems, and apparatus, are described, including computer programs encoded on a computer storage medium, for managing migration of data. The methods, systems, and apparatus may include actions of enabling a server to operate in different states. Generally, the different states of the server may enable code on client devices to be gradually updated from using data stored in an old database to using data stored in a new database in a different format, while enabling the server to continue responding to requests for data from client devices.

Claims (76)

1. A computer-implemented method comprising:

receiving, by a server and from a client device, a request to migrate data from a first data store in a first structure format to a different, second data store in a different, second data structure format;

accessing, by the server, the data in the first data store based on the received request to migrate the data;

storing, by the server, the data accessed in the first data store in the second data store;

determining, by the server, that the server has completed storing the data in the second data store, wherein when the server has completed storing the data in the second data store the server is in a first state where the server (i) exposes data from the first data store to the client device, (ii) does not expose data from the second data store to the client device, and (iii) replicates changes in the first data store to the second data store;

receiving, by the server and from a user, a request to place the server in the second state, wherein while in the second state the server (i) exposes data from the first data store to the client device, (ii) exposes data from the second data store to the client device, (iii) replicates changes in the first data store to the second data store, and (iv) replicates changes in the second data store to the first data store;

in response to receiving, by the server, the request to place the server in the second state, placing, by the server, the server in the second state;

replicating, by the server while in the second state, changes in the first data store to the second data store;

replicating, by the server while in the second state, changes in the second data store to the first data store;

obtaining, by the server while in the second state, data for responding to a user request, wherein the data for responding to the user request is obtained from the first data store or the second data store without downtime that interrupts a service function of the server that is used for responding to user requests, based on the server replicating changes: (i) in the first data store to the second data store, and (ii) in the second data store to the first data store;

providing, by the server, the data obtained from the first data store or the second data store as a response to the user request;

receiving, by the server, a request to place the server in a third state, wherein while in the third state the server (i) does not expose data from the first data store to the client device, (ii) exposes data from the second data store to the client device, and (iii) replicates changes in the second data store to the first data store; and

placing the server in the third state.

2. The method of claim 1 , further comprising:

receiving a request for data from the second data store;

determining that the server is in the first state; and

in response to determining that the server is in the first state, providing an indication that data from the second data store is not available.

3. The method of claim 2 , wherein placing the server in the third state comprises deleting the first data store.

4. The method of claim 1 , further comprising:

receiving a request for data from the first data store;

determining that the server is in the third state; and

in response to determining that the server is in the third state, providing an indication that data from the first data store is not available.

5. The method of claim 1 , wherein in the second state, the server intercepts requests to change data stored in the first data store and generates a corresponding request to change data stored in the second data store.

6. The method of claim 1 , wherein in the second state the server intercepts requests to change data stored in the second data store and generates a corresponding request to change data stored in the first data store.

7. The method of claim 1 , wherein the first structure format includes fields with single values and the second structure format includes corresponding fields with multiple values.

8. The method of claim 7 , wherein storing the data in the second data store comprises storing the data according to one or more migration rules that specify the fields in the first structure format that correspond to the fields in the second structure format.

9. A system comprising:

one or more computers; and

one or more storage devices storing instructions that, when executed by the one or more computers, cause the one or more computers to perform operations comprising:

receiving, by a server and from a client device, a request to migrate data from a first data store in a first structure format to a different, second data store in a different, second structure format;

accessing, by the server, the data in the first data store based on the received request to migrate the data;

storing, by the server, the data accessed in the first data store in the second data store;

determining, by the server, that the server has completed storing the data in the second data store, wherein when the server has completed storing the data in the second data store the server is in a first state where the server (i) exposes data from the first data store to the client device, (ii) does not expose data from the second data store to the client device, and (iii) replicates changes in the first data store to the second data store;

receiving, by the server and from a user, a request to place the server in the second state, wherein while in the second state the server (i) exposes data from the first data store to the client device, (ii) exposes data from the second data store to the client device, (iii) replicates changes in the first data store to the second data store, and (iv) replicates changes in the second data store to the first data store;

in response to receiving, by the server, the request to place the server in the second state, placing, by the server, the server in the second state;

replicating, by the server while in the second state, changes in the first data store to the second data store;

replicating, by the server while in the second state, changes in the second data store to the first data store;

obtaining, by the server while in the second state, data for responding to a user request, wherein the data for responding to the user request is obtained from the first data store or the second data store without downtime that interrupts a service function of the server that is used for responding to user requests, based on the server replicating changes: (i) in the first data store to the second data store, and (ii) in the second data store to the first data store;

providing, by the server, the data obtained from the first data store or the second data store as a response to the user request;

receiving, by the server, a request to place the server in a third state, wherein while in the third state the server (i) does not expose data from the first data store to the client device, (ii) exposes data from the second data store to the client device, and (iii) replicates changes in the second data store to the first data store; and

placing, by the server, the server in the third state.

10. The system of claim 9 , the operations further comprising:

receiving a request for data from the second data store;

determining that the server is in the first state; and

in response to determining that the server is in the first state, providing an indication that data from the second data store is not available.

11. The system of claim 10 , wherein placing the server in the third state comprises deleting the first data store.

12. The system of claim 9 , the operations further comprising:

receiving a request for data from the first data store;

determining that the server is in the third state; and

in response to determining that the server is in the third state, providing an indication that data from the first data store is not available.

13. The system of claim 9 , wherein in the second state, the server intercepts requests to change data stored in the first data store and generates a corresponding request to change data stored in the second data store.

14. The system of claim 9 , wherein in the second state the server intercepts requests to change data stored in the second data store and generates a corresponding request to change data stored in the first data store.

15. The system of claim 9 , wherein the first structure format includes fields with single values and the second structure format includes corresponding fields with multiple values.

16. The system of claim 15 , wherein storing the data in the second data store comprises storing the data according to one or more migration rules that specify the fields in the first structure format that correspond to the fields in the second structure format.

17. A non-transitory computer-readable medium storing software comprising instructions executable by one or more computers which, upon such execution, cause the one or more computers to perform operations comprising:

receiving, by a server and from a client device, a request to migrate data from a first data store in a first structure format to a different, second data store in a different, second structure format;

accessing, by the server, the data in the first data store based on the received request to migrate the data;

storing, by the server, the data accessed in the first data store in the second data store;

determining, by the server, that the server has completed storing the data in the second data store, wherein when the server has completed storing the data in the second data store the server is in a first state where the server (i) exposes data from the first data store to the client device, (ii) does not expose data from the second data store to the client device, and (iii) replicates changes in the first data store to the second data store;

receiving, by the server and from a user, a request to place the server in the second state, wherein while in the second state the server (i) exposes data from the first data store to the client device, (ii) exposes data from the second data store to the client device, (iii) replicates changes in the first data store to the second data store, and (iv) replicates changes in the second data store to the first data store;

in response to receiving, by the server, the request to place the server in the second state, placing, by the server, the server in the second state;

replicating, by the server while in the second state, changes in the first data store to the second data store;

replicating, by the server while in the second state, changes in the second data store to the first data store;

obtaining, by the server while in the second state, data for responding to a user request, wherein the data for responding to the user request is obtained from the first data store or the second data store without downtime that interrupts a service function of the server that is used for responding to user requests, based on the server replicating changes: (i) in the first data store to the second data store, and (ii) in the second data store to the first data store; and

providing, by the server, the data obtained from the first data store or the second data store as a response to the user request;

receiving, by the server, a request to place the server in a third state, wherein while in the third state the server (i) does not expose data from the first data store to the client device, (ii) exposes data from the second data store to the client device, and (iii) replicates changes in the second data store to the first data store; and

placing, by the server, the server in the third state.

18. The medium of claim 17 , the operations further comprising:

receiving a request for data from the second data store;

determining that the server is in the first state; and

in response to determining that the server is in the first state, providing an indication that data from the second data store is not available.

19. The medium of claim 17 the operations further comprising:

receiving a request for data from the first data store;

determining that the server is in the third state; and

in response to determining that the server is in the third state, providing an indication that data from the first data store is not available.

20. The medium of claim 17 , wherein in the second state, the server intercepts requests to change data stored in the first data store and generates a corresponding request to change data stored in the second data store.

Assignments (10)
SECURITY INTEREST Recorded Mar 12, 2026
From: IMS SOFTWARE SERVICES LTD.; IQVIA INC.; IQVIA RDS INC.; RULES-BASED MEDICINE, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 075047/0061 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTIES INADVERTENTLY NOT INCLUDED IN FILING PREVIOUSLY RECORDED AT REEL: 065709 FRAME: 618. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT. Recorded Dec 6, 2023
From: IQVIA INC.; IQVIA RDS INC.; IMS SOFTWARE SERVICES LTD.; Q SQUARED SOLUTIONS HOLDINGS LLC
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
Reel/Frame 065790/0781 →
SECURITY INTEREST Recorded Nov 29, 2023
From: IQVIA INC.
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
Reel/Frame 065709/0618 →
SECURITY INTEREST Recorded Nov 29, 2023
From: IQVIA INC.; IQVIA RDS INC.; IMS SOFTWARE SERVICES LTD.; Q SQUARED SOLUTIONS HOLDINGS LLC
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
Reel/Frame 065710/0253 →
SECURITY INTEREST Recorded May 24, 2023
From: IQVIA INC.; IQVIA RDS INC.; IMS SOFTWARE SERVICES LTD.; Q SQUARED SOLUTIONS HOLDINGS LLC
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
Reel/Frame 063745/0279 →
MERGER AND CHANGE OF NAME Recorded Jan 22, 2018
From: IMS HEALTH INCORPORATED; QUINTILES TRANSNATIONAL CORP.
To: QUINTILES IMS INCORPORATED
Reel/Frame 045102/0549 →
MERGER AND CHANGE OF NAME Recorded Feb 23, 2017
From: IMS HEALTH INCORPORATED; QUINTILES TRANSNATIONAL CORP.
To: QUINTILES IMS INCORPORATED
Reel/Frame 041791/0233 →
MERGER AND CHANGE OF NAME Recorded Jan 5, 2017
From: IMS HEALTH INCORPORATED; QUINTILES TRANSNATIONAL CORP.
To: QUINTILES IMS INCORPORATED
Reel/Frame 041260/0474 →
SUPPLEMENTAL SECURITY AGREEMENT Recorded Jan 14, 2016
From: IMS HEALTH INCORPORATED
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037515/0780 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2015
From: CARUSO, BRIAN
To: IMS HEALTH INCORPORATED
Reel/Frame 037165/0193 →