IP Library Granted Patent US 9,898,501
Granted Patent B2
US 9,898,501 · App. 14/025,157 · Granted Feb 20, 2018

Method and system for performing transactional updates in a key-value store

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 9,898,501
App. No.
14/025,157
Granted
Feb 20, 2018
Kind
B2
Abstract

A method and system for performing a transactional update of a plurality of values in a key-value store that includes a first writer starting a transaction, a second writer joining the transaction, the first writer and the second writer writing changes to the plurality of values in a temporary transaction area in a storage area, and after the first writer and the second writer complete writing the changes, moving the plurality of values from the temporary transaction area to a global area in the key-value store.

Claims (53)

1. A computer implemented method including a processor circuitry configured for performing a transactional update of a plurality of values in a key-value store, the method comprising:

a first writer starting a transaction that includes updating, in a temporary transaction area, the plurality of values with a first set of changes;

a second writer joining the transaction and updating, in the temporary transaction area, the plurality of values with a second set of changes;

upon determining that the first set of changes and the second set of changes include respective first and second sets of multiple values associated with a pre-existing key in the key-value store, merging the multiple values from each of the sets of changes and updating the plurality of values with the merged value; and

upon determining that the first writer and the second writer have completed writing the sets of changes, moving the plurality of values from the temporary transaction area to a global area in the key-value store; maintaining a global transaction state that is periodically updated by the first writer and the second writer; adding information about the first writer and the second writer to the global transaction state; before the first writer and the second writer start updating the plurality of values, updating the global transaction state to a write state; and after the first writer and the second writer complete updating the plurality of values, updating the global transaction state to a commit state.

2. The method according to claim 1 , wherein additional writers are permitted to join the transaction before the global transaction state is updated to the commit state.

3. The method according to claim 1 , wherein each of the writers, upon completion of updating the plurality of values, updates the global transaction state to indicate the completion of updating the plurality of values, and

wherein once the global transaction state indicates each of the writers have completed updating the plurality of values, the global transaction state is updated to the commit state and the moving the plurality of values from the temporary transaction area to the global area in the key-value store is performed.

4. The method according to claim 1 , further comprising:

after the first writer completes updating the plurality of values, updating the global transaction state to indicate that the first writer has entered a prepare commit state and is waiting for the second writer to enter the prepare commit state;

after the second writer completes updating the plurality of values, updating the global transaction state to indicate that the second writer has entered a prepare commit state and is waiting for the first writer to enter the prepare commit state;

after the first writer and the second writer are in the prepare commit state as indicated by the global transaction state, the updating the global transaction state to the commit state and the moving the plurality of values from the temporary transaction area to a global area in the key-value store are performed.

5. The method according to claim 1 , wherein the moving the plurality of values from the temporary transaction area to the global area in the key-value store comprises:

reading the plurality of values from the temporary transaction area;

writing the plurality of values read from the temporary transaction area to the global area in the key-value store; and

deleting the plurality of values from the temporary transaction area.

6. The method according to claim 3 , wherein a reader reads from the global area in the key-value store except when the global transaction state is set to the commit state, during which the reader first reads from the temporary transaction area and then, if a value to be read does not exist in the temporary transaction area, reads from the global area in the key-value store.

7. The method according to claim 6 , wherein when the reader initiates a read prior to the updating the global transaction state to the commit state and the read is not completed at a time when the updating the global transaction state to the commit state is performed, the writers delay writing the changes until the reader completes the read.

8. A non-transitory computer readable medium storing a program causing a computer to execute a method for performing a transactional update of a plurality of values in a key-value store, the method comprising:

a first writer starting a transaction that includes updating, in a temporary transaction area, the plurality of values with a first set of changes;

a second writer joining the transaction and updating, in the temporary transaction area, the plurality of values with a second set of changes;

upon determining that the first set of changes and the second set of changes include respective first and second sets of multiple values associated with a pre-existing key in the key-value store, merging the multiple values from each of the sets of changes and updating the plurality of values with the merged value; and

upon determining that the first writer and the second writer have completed writing the sets of changes, moving the plurality of values from the temporary transaction area to a global area in the key-value store; maintaining a global transaction state that is periodically updated by the first writer and the second writer; adding information about the first writer and the second writer to the global transaction state; before the first writer and the second writer start updating the plurality of values, updating the global transaction state to a write state; and after the first writer and the second writer complete updating the plurality of values, updating the global transaction state to a commit state.

9. The non-transitory computer readable medium according to claim 8 , wherein additional writers are permitted to join the transaction before the global transaction state is updated to the commit state.

10. The non-transitory computer readable medium according to claim 8 , wherein each of the writers, upon completion of updating the plurality of values, updates the global transaction state to indicate the completion of updating the plurality of values, and

wherein once the global transaction state indicates each of the writers have completed updating the plurality of values, the global transaction state is updated to the commit state and the moving the plurality of values from the temporary transaction area to the global area in the key-value store is performed.

11. The non-transitory computer readable medium according to claim 8 , further comprising:

after the first writer completes updating the plurality of values, updating the global transaction state to indicate that the first writer has entered a prepare commit state and is waiting for the second writer to enter the prepare commit state;

after the second writer completes updating the plurality of values, updating the global transaction state to indicate that the second writer has entered a prepare commit state and is waiting for the first writer to enter the prepare commit state;

after the first writer and the second writer are in the prepare commit state as indicated by the global transaction state, the updating the global transaction state to the commit state and the moving the plurality of values from the temporary transaction area to a global area in the key-value store are performed.

12. The non-transitory computer readable medium according to claim 8 , wherein the moving the plurality of values from the temporary transaction area to the global area in the key-value store comprises:

reading the plurality of values from the temporary transaction area;

writing the plurality of values read from the temporary transaction area to the global area in the key-value store; and

deleting the plurality of values from the temporary transaction area.

13. The non-transitory computer readable medium according to claim 10 , wherein a reader reads from the global area in the key-value store except when the global transaction state is set to the commit state, during which the reader first reads from the temporary transaction area and then, if a value to be read does not exist in the temporary transaction area, reads from the global area in the key-value store.

14. The non-transitory computer readable medium according to claim 13 , wherein when the reader initiates a read prior to the updating the global transaction state to the commit state and the read is not completed at a time when the updating the global transaction state to the commit state is performed, the writers delay writing the changes until the reader completes the read.

15. A system for performing a transactional update of a plurality of values in a key-value store, the system comprising:

a processor circuitry;

a key-value store;

a first writer unit that starts a transaction that includes updating, in a temporary transaction area, the plurality of values with a first set of changes; and

a second writer unit that joins the transaction and updates, in the temporary transaction area, the plurality of values with a second set of changes,

wherein upon determining that the first set of changes and the second set of changes include respective first and second sets multiple values associated with a pre-existing key in the key-value store, merging the multiple values from each of the sets of changes and updating the plurality of values with the merged value; and

wherein upon determining that the first writer unit and the second writer unit have completed writing the sets of changes, moving the plurality of values from the temporary transaction area to a global area in the key-value store wherein: the first writer unit and the second writer unit periodically update a global transaction state; the first writer unit and the second writer unit add information about the first writer unit and the second writer unit to the global transaction state; before the first writer unit and the second writer unit start updating the plurality of values, the global transaction state is updated to a write state; and after the first writer unit and the second writer unit complete updating the plurality of values, the global transaction state is updated to a commit state.

16. The system according to claim 15 , further comprising additional writer units that join the transaction before the global transaction state is updated to the commit state.

17. The system according to claim 15 , wherein each of the writer units, upon completion of updating the plurality of values, updates the global transaction state to indicate the completion of updating the plurality of values, and

wherein once the global transaction state indicates each of the writer units have completed updating the plurality of values, the global transaction state is updated to the commit state and the plurality of values are moved from the temporary transaction area to the global area in the key-value store.

18. The system according to claim 15 , wherein:

the first writer unit, after completing updating the plurality of values, updates the global transaction state to indicate that the first writer unit has entered a prepare commit state and is waiting for the second writer unit to enter the prepare commit state;

the second writer unit, after completing updating the plurality of values, updates the global transaction state to indicate that the second writer unit has entered a prepare commit state and is waiting for the first writer unit to enter the prepare commit state;

after the first writer unit and the second writer unit are in the prepare commit state as indicated by the global transaction state, the global transaction state is updated to the commit state the plurality of values are moved from the temporary transaction area to a global area in the key-value store.

19. The system according to claim 15 , wherein the first writer unit and the second writer unit move the plurality of values from the temporary transaction area to the global area in the key-value store by reading the plurality of values from the temporary transaction area, writing the plurality of values read from the temporary transaction area to the global area in the key-value store, and deleting the plurality of values from the temporary transaction area.

20. The system according to claim 17 , further comprising a reader unit that reads from the global area in the key-value store except when the global transaction state is set to the commit state, during which the reader unit first reads from the temporary transaction area and then, if a value to be read does not exist in the temporary transaction area, reads from the global area in the key-value store.

21. The system according to claim 20 , wherein when the reader unit initiates a read prior to the updating the global transaction state to the commit state and the read is not completed at a time when the updating the global transaction state to the commit state is performed, the writers units delay writing the changes until the reader completes the read.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE APPLICATION NO. 16/990,698 PREVIOUSLY RECORDED ON REEL 058294 FRAME 0010. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 21, 2022
From: TRU OPTIK DATA CORP.; NEUSTAR INFORMATION SERVICES, INC.; NEUSTAR DATA SERVICES, INC.; TRUSTID, INC.; NEUSTAR, INC.; NEUSTAR IP INTELLIGENCE, INC.; MARKETSHARE PARTNERS, LLC; SONTIQ, INC.
To: DEUTSCHE BANK AG NEW YORK BRANCH
Reel/Frame 059846/0157 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS RECORDED AT REEL 058294, FRAME 0161 Recorded Dec 27, 2021
From: JPMORGAN CHASE BANK, N.A.
To: EBUREAU, LLC; IOVATION, INC.; SIGNAL DIGITAL, INC.; TRANS UNION LLC; TRANSUNION INTERACTIVE, INC.; TRANSUNION RENTAL SCREENING SOLUTIONS, INC.; TRANSUNION TELEDATA LLC; AGGREGATE KNOWLEDGE, LLC; TRU OPTIK DATA CORP.; NEUSTAR INFORMATION SERVICES, INC.; TRUSTID, INC.; NEUSTAR, INC.; NEUSTAR IP INTELLIGENCE, INC.; MARKETSHARE PARTNERS, LLC; SONTIQ, INC.
Reel/Frame 058593/0852 →
SECOND LIEN PATENT SECURITY AGREEMENT RELEASE Recorded Dec 3, 2021
From: UBS AG, STAMFORD BRANCH
To: NEUSTAR, INC.; MARKETSHARE PARTNERS LLC; AGGREGATE KNOWLEDGE, INC.; NEUSTAR INFORMATION SERVICES, INC.; NEUSTAR IP INTELLIGENCE, INC.
Reel/Frame 058300/0739 →
FIRST LIEN PATENT SECURITY AGREEMENT RELEASE Recorded Dec 3, 2021
From: BANK OF AMERICA, N.A.
To: NEUSTAR, INC.; MARKETSHARE PARTNERS LLC; AGGREGATE KNOWLEDGE, INC.; NEUSTAR INFORMATION SERVICES, INC.; NEUSTAR IP INTELLIGENCE, INC.
Reel/Frame 058300/0762 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Dec 1, 2021
From: TRU OPTIK DATA CORP.; NEUSTAR INFORMATION SERVICES, INC.; NEUSTAR DATA SERVICES, INC.; TRUSTID, INC.; NEUSTAR, INC.; NEUSTAR IP INTELLIGENCE, INC.; MARKETSHARE PARTNERS, LLC; SONTIQ, INC.
To: DEUTSCHE BANK AG NEW YORK BRANCH
Reel/Frame 058294/0010 →
GRANT OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Dec 1, 2021
From: EBUREAU, LLC; IOVATION, INC.; SIGNAL DIGITAL, INC.; TRANS UNION LLC; TRANSUNION HEALTHCARE, INC.; TRANSUNION INTERACTIVE, INC.; TRANSUNION RENTAL SCREENING SOLUTIONS, INC.; TRANSUNION TELEDATA LLC; AGGREGATE KNOWLEDGE, LLC; TRU OPTIK DATA CORP.; NEUSTAR INFORMATION SERVICES, INC.; TRUSTID, INC.; NEUSTAR, INC.; NEUSTAR IP INTELLIGENCE, INC.; MARKETSHARE PARTNERS, LLC; SONTIQ, INC.
To: JPMORGAN CHASE BANK, N.A
Reel/Frame 058294/0161 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Aug 22, 2017
From: MARKETSHARE PARTNERS LLC; AGGREGATE KNOWLEDGE, INC.; NEUSTAR INFORMATION SERVICES, INC.; NEUSTAR IP INTELLIGENCE, INC.; NEUSTAR, INC.
To: UBS AG, STAMFORD BRANCH
Reel/Frame 043633/0527 →
SECURITY INTEREST Recorded Aug 22, 2017
From: MARKETSHARE PARTNERS LLC; AGGREGATE KNOWLEDGE, INC.; NEUSTAR INFORMATION SERVICES, INC.; NEUSTAR IP INTELLIGENCE, INC.; NEUSTAR, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 043633/0440 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2013
From: BOGRETT, STEVEN
To: NEUSTAR, INC.
Reel/Frame 031194/0127 →