IP Library Granted Patent US 10,877,994
Granted Patent B2
US 10,877,994 · App. 15/452,374 · Granted Dec 29, 2020

Identifier based data replication

Inventors: Geoffrey John Jacoby (Emeryville, CA); Lars Hofhansl (Orinda, CA); Alex J. Araujo (Round Rock, TX)
Assignee: salesforce.com, inc.
G06F16/275G06F11/1451G06F11/1456G06F11/1464G06F16/27G06F2201/80
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,877,994
App. No.
15/452,374
Granted
Dec 29, 2020
Kind
B2
Abstract

A database system may store data at a primary database and replicate the data to one or more disaster recover (DR) databases. The database system may determine which DR database to use for data replication based on an identifier of the data. A method for data storage may include receiving and storing a first data block and a second data block at a first database server. The method may further include transmitting a first backup request for the first data block to a second database server based on an identifier of the first data block and transmitting a second backup request for the second data block to a third database server based on an identifier of the second data block.

Claims (44)

1. A method for data storage, comprising:

receiving a first data block, a second data block and a third data block at a first database server, wherein the first data block comprises a first identifier, the second data block comprises a second identifier and the third data block comprises a third identifier;

storing the first data block, the second data block and the third data block at the first database server;

determining a second database server based at least in part on a lookup table including a correlation between the first identifier and the second database server;

determining a third database server based at least in part on the lookup table including a correlation between the second identifier and the third database server;

transmitting a first backup request for the first data block to the second database server;

transmitting a second backup request for the second data block to the third database server, wherein the third database server is different from the second database server; and

transmitting a third backup request for the third data block to the second database server and the third database server based at least in part on a determination that the lookup table does not include the third identifier.

2. The method of claim 1 , wherein the first database server, the second database server, and the third database server are each located at different geographic locations.

3. The method of claim 1 , wherein the first identifier indicates a first tenant associated with the first data block, and the second identifier indicates a second tenant associated with the second data block.

4. The method of claim 1 , wherein the first data block and the second data block are arranged in a plurality of key-value pairs, and wherein the first identifier and the second identifier are stored in a key of the plurality of key-value pairs.

5. The method of claim 4 , wherein the first identifier and the second identifier are arranged first in the key of the plurality of key-value pairs.

6. The method of claim 1 , wherein the first database server comprises a first server cluster, the second database server comprises a second server cluster, and the third database server comprises a third server cluster.

7. The method of claim 1 , wherein transmitting the first backup request and the second backup request is based at least in part on the lookup table, wherein the lookup table includes the first identifier and the second identifier.

8. The method of claim 1 , wherein the first database server, the second database server, and the third database server each comprise an HBase database.

9. An apparatus for data storage, in a system comprising:

a processor;

memory in electronic communication with the processor; and

instructions stored in the memory and operable, when executed by the processor, to cause the apparatus to:

receive a first data block, a second data block and a third data block at a first database server, wherein the first data block comprises a first identifier, the second data block comprises a second identifier and the third data block comprises a third identifier;

store the first data block, the second data block and the third data block at the first database server;

determine a second database server based at least in part on a lookup table including a correlation between the first identifier and the second database server;

determine a third database server based at least in part on the lookup table including a correlation between the second identifier and the third database server;

transmit a first backup request for the first data block to the second database server;

transmit a second backup request for the second data block to the third database server, wherein the third database server is different from the second database server; and

transmit a third backup request for the third data block to the second database server and the third database server based at least in part on a determination that the lookup table does not include the third identifier.

10. The apparatus of claim 9 , wherein the first database server, the second database server, and the third database server are each located at different geographic locations.

11. The apparatus of claim 9 , wherein the first identifier indicates a first tenant associated with the first data block, and the second identifier indicates a second tenant associated with the second data block.

12. The apparatus of claim 9 , wherein the first data block and the second data block are arranged in a plurality of key-value pairs, and wherein the first identifier and the second identifier are stored in a key of the plurality of key-value pairs.

13. The apparatus of claim 9 , wherein the first database server comprises a first server cluster, the second database server comprises a second server cluster, and the third database server comprises a third server cluster.

14. The apparatus of claim 9 , wherein transmitting the first backup request and the second backup request is based at least in part on the lookup table, wherein the lookup table includes the first identifier and the second identifier.

15. The apparatus of claim 9 , wherein the first database server, the second database server, and the third database server each comprise an HBase database.

16. A non-transitory computer readable medium storing code for data storage, the code comprising instructions executable by a processor to:

receive a first data block, a second data block and a third data block at a first database server, wherein the first data block comprises a first identifier, the second data block comprises a second identifier and the third data block comprises a third identifier;

store the first data block, the second data block and the third data block at the first database server;

determine a second database server based at least in part on a lookup table including a correlation between the first identifier and the second database server;

determine a third database server based at least in part on the lookup table including a correlation between the second identifier and the third database server;

transmit a first backup request for the first data block to the second database server;

transmit a second backup request for the second data block to the third database server, wherein the third database server is different from the second database server; and

transmit a third backup request for the third data block to the second database server and the third database server based at least in part on a determination that the lookup table does not include the third identifier.

17. The non-transitory computer-readable medium of claim 16 , wherein the first database server, the second database server, and the third database server are each located at different geographic locations.

18. The non-transitory computer-readable medium of claim 16 , wherein the first identifier indicates a first tenant associated with the first data block, and the second identifier indicates a second tenant associated with the second data block.

19. The non-transitory computer-readable medium of claim 16 , wherein the first data block and the second data block are arranged in a plurality of key-value pairs, and wherein the first identifier and the second identifier are stored in a key of the plurality of key-value pairs.

20. The non-transitory computer-readable medium of claim 16 , wherein the first database server comprises a first server cluster, the second database server comprises a second server cluster, and the third database server comprises a third server cluster.

Assignments (3)
CHANGE OF NAME Recorded Nov 21, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069431/0179 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2017
From: JACOBY, GEOFFREY; HOFHANSL, LARS; ARAUJO, ALEX
To: SALESFORCE.COM, INC.
Reel/Frame 042152/0453 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2017
From: JACOBY, GEOFFREY JOHN; HOFHANSL, LARS
To: SALESFORCE.COM, INC.
Reel/Frame 041488/0476 →
Continuity (1)
Related Publication 20180260466A1 · Sep 13, 2018