IP Library Granted Patent US 9,183,200
Granted Patent B1
US 9,183,200 · App. 13/564,984 · Granted Nov 10, 2015

Scale up deduplication engine via efficient partitioning

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,183,200
App. No.
13/564,984
Granted
Nov 10, 2015
Kind
B1
Abstract

An efficient partitioning scheme is provided to improve efficiency of updating a reference list database of a deduplication engine. Transaction objects of a transaction log can be divided into a number of partitioned log files, based on criteria. The transaction objects within each partitioned log file are then sorted in parallel, while maintaining time order of the transaction objects. The present disclosure also provides for dividing database records of a reference list database into multiple tables, such as a master database table and a number of child database tables. The efficient partitioning scheme also provides for processing the transaction objects of each partitioned log file against a respective child table of the reference list database in parallel, such as by updating temporary child tables with information from the transaction objects in parallel. The temporary database tables then replace (the previous version of) the reference list database tables.

Claims (114)

1. A computer-implemented method, using one or more processors and a non-transient computer-readable storage medium, comprising:

partitioning a transaction log into a plurality of partitioned log files, wherein

the transaction log comprises a plurality of transaction objects, wherein

each of the transaction objects comprises a unique hash value, and

each of the unique hash values is based, at least in part, on information in a corresponding one of the transaction objects;

the partitioning the transaction log comprises

dividing the plurality of transaction objects into the plurality of partitioned log files, wherein

each of the plurality of partitioned log files is associated with a hash-value-based range constraint among a plurality of hash-value-based range constraints,

for each of the transaction objects to be partitioned, the dividing uses the unique hash value of said transaction object to allocate said transaction object to a corresponding partitioned log file of the plurality of partitioned log files, wherein

 the corresponding partitioned log file is associated with the hash-value-based range constraint that comprises the unique hash value of said transaction object, and

as a result of the dividing, each of the plurality of partitioned log files comprises a subset of the plurality of transaction objects; and

sorting each of the plurality of partitioned log files, wherein

the plurality of partitioned log files are sorted concurrently, and

the sorting produces a plurality of sorted partitioned log files.

2. The method of claim 1 , wherein

each of the transaction objects further comprises information about corresponding deduplicated data, and

the corresponding deduplicated data is stored in a deduplication store.

3. The method of claim 1 , further comprising:

updating a plurality of tables, wherein

the plurality of tables are updated concurrently, and

the updating uses the plurality of sorted partitioned log files.

4. The method of claim 3 , wherein the dividing the plurality of transaction objects further comprises:

comparing a first hash value of a first transaction object with a first hash value range associated with a first partitioned log file; and

storing the first transaction object in the first partitioned log file, in response to a determination that the first hash value falls within the first hash value range.

5. The method of claim 1 , wherein:

a number of hash-value-based range constraints among the plurality of hash-value-based range constraints does not exceed a number of CPU cores among a plurality of CPU cores, wherein

each CPU core is operably coupled to one or more processors; and

the sorting further comprises

assigning each of the plurality of partitioned log files to a respective thread of a plurality of threads, wherein

each of the plurality of threads is assigned to a separate CPU core among the plurality of CPU cores; and

concurrently sorting, by the respective thread, each of the plurality of partitioned log files.

6. The method of claim 3 , wherein

a reference list database comprises a plurality of tables,

the reference list database comprises information about deduplicated data stored in a deduplication store, and

each of the plurality of tables comprises a subset of the information.

7. The method of claim 3 , wherein the updating the plurality of tables further comprises:

assigning a respective table of the plurality of tables to a respective thread of a plurality of threads;

assigning a respective sorted partitioned log file of the plurality of sorted partitioned log files to the respective thread, wherein

the respective sorted partitioned log file shares at least a portion of a first hash-value-based range constraint associated with the respective table, wherein

the first hash-value-based range constraint is one of the plurality of hash-value-based range constraints; and

concurrently processing, by the respective thread, the respective sorted partitioned log file against the respective table.

8. The method of claim 7 , wherein the concurrently processing the respective sorted partitioned log file comprises:

generating a respective dump file for the respective table;

merging the respective sorted partitioned log file with the respective dump file to produce a respective merged dump file; and

importing the respective merged dump file into a temporary table.

9. The method of claim 3 , wherein the updating the plurality of tables comprises:

updating a plurality of temporary tables in parallel; and

replacing the plurality of tables with the plurality of temporary tables.

10. A non-transitory computer readable storage medium configured to store program instructions that, when executed on a processor, are configured to cause the processor to perform a method comprising:

partitioning a transaction log into a plurality of partitioned log files, wherein

the transaction log comprises a plurality of transaction objects, wherein

each of the transaction objects comprises a unique hash value, and

each of the unique hash values is based, at least in part, on information in a corresponding one of the transaction objects;

the partitioning the transaction log comprises

dividing the plurality of transaction objects into the plurality of partitioned log files, wherein

each of the plurality of partitioned log files is associated with a hash-value-based range constraint among a plurality of hash-value-based range constraints,

for each of the transaction objects to be partitioned, the dividing uses the unique hash value of said transaction object to allocate said transaction object to a corresponding partitioned log file of the plurality of partitioned log files, wherein

 the corresponding partitioned log file is associated with the hash-value-based range constraint that comprises the unique hash value of said transaction object, and

as a result of the dividing, each of the plurality of partitioned log files comprises a subset of the plurality of transaction objects; and

sorting each of the plurality of partitioned log files in parallel, wherein

the plurality of partitioned log files are sorted concurrently, and

the sorting produces a plurality of sorted partitioned log files.

11. The non-transitory computer readable storage medium of claim 10 , wherein

each of the transaction objects further comprises information about corresponding deduplicated data, and

the corresponding deduplicated data is stored in a deduplication store.

12. The non-transitory computer readable storage medium of claim 10 , wherein the method performed by the processor further comprises:

updating a plurality of tables, wherein

the plurality of tables are updated concurrently, and

the updating uses the plurality of sorted partitioned log files.

13. The non-transitory computer readable storage medium of claim 11 , wherein the dividing the plurality of transaction objects further comprises:

comparing a first hash value of a first transaction object with a first hash value range associated with a first partitioned log file; and

storing the first transaction object in the first partitioned log file, in response to a determination that the first hash value falls within the first hash value range.

14. The non-transitory computer readable storage medium of claim 10 , wherein

a number of hash-value-based range constraints among the plurality of hash-value-based range constraints does not exceed a number of CPU cores among a plurality of CPU cores, wherein each CPU core is operably coupled to one or more processors; and

the sorting further comprises

assigning each of the plurality of partitioned log files to a respective thread of a plurality of threads, wherein

each of the plurality of threads is assigned to a separate CPU core among the plurality of CPU cores; and

concurrently sorting, by the respective thread, each of the plurality of partitioned log files.

15. The non-transitory computer readable storage medium of claim 12 , wherein

a reference list database comprises the plurality of tables,

the reference list database comprises information about deduplicated data stored in a deduplication store, and

each of the plurality of tables comprises a subset of the information.

16. The non-transitory computer readable storage medium of claim 10 , wherein the updating the plurality of tables further comprises:

assigning a respective table of the plurality of tables to a respective thread of a plurality of threads;

assigning a respective sorted partitioned log file of the plurality of sorted partitioned log files to the respective thread, wherein

the respective sorted partitioned log file shares at least a portion of a first hash-value-based range constraint associated with the respective table; and

concurrently processing, by the respective thread, the respective sorted partitioned log file against the respective table.

17. The non-transitory computer readable storage medium of claim 16 , wherein the concurrently processing the respective sorted partitioned log file comprises:

generating a respective dump file for the respective table;

merging the respective sorted partitioned log file with the respective dump file to produce a respective merged dump file; and

importing the respective merged dump file into a temporary table.

18. The non-transitory computer readable storage medium of claim 12 , wherein the updating the plurality of tables comprises:

updating a plurality of temporary tables in parallel; and

replacing the plurality of tables with the plurality of temporary tables.

19. An apparatus comprising:

a partitioning module comprising:

means to partition a transaction log into a plurality of partitioned log files, wherein

the transaction log comprises a plurality of transaction objects, wherein

each of the transaction objects comprises a unique hash value, and

each of the unique hash values is based, at least in part, on information in a corresponding one of the transaction objects;

the means to partition the transaction log comprises

means for dividing the plurality of transaction objects into the plurality of partitioned log files, wherein

each of the plurality of partitioned log files is associated with a hash-value-based range constraint among a plurality of hash-value-based range constraints,

for each of the transaction objects to be partitioned, the means for dividing uses the unique hash value of said transaction object to allocate said transaction object to a corresponding partitioned log file of the plurality of partitioned log files, wherein

 the corresponding partitioned log file is associated with the hash-value-based range constraint that comprises the unique hash value of said transaction object, and

each of the plurality of partitioned log files comprises a subset of the plurality of transaction objects, as a result of the dividing; and

means to generate a plurality of sorted partitioned log files, wherein

the means to generate further comprises

means to sort each of the plurality of partitioned log files, wherein

 the plurality of partitioned log files are sorted concurrently, and

 the means to sort produces a plurality of sorted partitioned log files.

20. The apparatus of claim 19 , wherein

each of the transaction objects further comprises information about corresponding deduplicated data, and

the corresponding deduplicated data is stored in a deduplication store.

Assignments (13)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2012
From: LIU, DANZHOU; SHE, HAIBIN; WANG, HAIGANG
To: SYMANTEC CORPORATION
Reel/Frame 028709/0810 →