IP Library Granted Patent US 11,126,594
Granted Patent B2
US 11,126,594 · App. 15/893,163 · Granted Sep 21, 2021

Delta compression

Inventors: Adrian T. VanderSpek (Worcester, MA); Steven Allan Tague (Tyngsboro, MA)
Assignee: Exagrid Systems, Inc.
G06F16/1744G06F11/1458G06F16/1756H03M7/3091
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,126,594
App. No.
15/893,163
Granted
Sep 21, 2021
Kind
B2
Abstract

Delta compression method, system and computer program product. Portions of source and target data files are hashed using a hashing function. A target data file is compared against the source data file to determine at least one delta difference between the files. A source data file hashing table is generated. The table includes hashed portions of the source and target data files stored in corresponding source file offset locations and corresponding target file offset locations, respectively. Portions of the source and target files are compared using corresponding source and target file offset locations. At least one common sequence of characters in the portions of the source and target files is determined based on the comparison. A patch file is generated based on the determined sequence of characters.

Claims (74)

1. A computer implemented method for accelerating delta-compressing data, wherein a target data file is being delta-compressed against a source data file and having at least one common sequence of characters with the source file, the method comprising:

selecting, for a computing system, a hashing function for executing the accelerating of delta-compressing of data by the computing system;

hashing a plurality of non-overlapping portions of the source data file using the selected hashing function to generate a plurality of corresponding hash values;

encoding the source data file by generating a source data file hashing table having a plurality of entries, each entry in the plurality of entries including a first part storing an encoded hash value and a second part storing encoded source file offset location corresponding to the hash value, the source data file hashing table being stored in a storage location, wherein a size of the source data file hashing table is determined based on a size of the source data file, the encoded source file offset location being encoded using a corresponding hash value and a hash mask, the encoded hash value being encoded using a portion of bits of the hash value;

comparing, upon determining a match between one or more encoded source file offset locations and one or more target file offset locations, an encoded hash value at the matching encoded source file offset location to a hash value of a portion of the target file at the matching target file offset location, the target file having a plurality of portions;

determining, based on the comparing, at least one longest common sequence of characters in the one or more portions of the source file and the one or more portions of the target file being present at the matching encoded source file offset location and the matching target file offset location;

generating, based on the determining, a patch file having at least one of the following: at least one insert instruction and at least copy instruction; and

delta-compressing the target file by replacing the target file with the generated patch file and writing the patch file into the storage location, the generated patch file having a smaller size than the target data file, wherein the one or more portions of the target file are generated by combining the one or more portions of the source file and the generated patch file.

2. The method according to claim 1 , wherein the generating the source data file hashing table further comprises

applying the hash mask to each hashed portion in the plurality of non-overlapping portions of the source data file; and

mapping, based on the applied hash mask, each hashed portion in the plurality of non-overlapping portions of the source data file to the corresponding source file offset location in the source data file hashing table.

3. The method according to claim 2 , wherein the corresponding source file offset location is determined based on a predetermined identifier corresponding to each portion in the plurality of portions, the predetermined identifier being stored in the source data file hashing table.

4. The method according to claim 3 , further comprising

applying the hash mask to each hash portion of the target data file; and

comparing one or more masked hash values of the target data file to one or more masked values in the source data file hashing table.

5. The method according to claim 1 , wherein each portion in the plurality of portions of the source file is 16 bytes.

6. The method according to claim 1 , wherein the encoding further comprises

initializing each entry in the source data file hashing table to a predetermined value.

7. The method according to claim 1 , wherein the plurality of portions of the target file include at least one of the following: overlapping portions, non-overlapping portions, and any combination thereof.

8. The method according to claim 1 , wherein

a predetermined number of bits is allocated to a combined size of the first and second parts, the first part having a size of a first number of bits and the second part having a size of a second number of bits;

the second number of bits is determined based on the size of the source file and is allocated from the predetermined number of bits; and

the first number of bits is determined based on bits remaining in the predetermined number of bits after the second number of bits are allocated.

9. The method according to claim 8 , wherein the hash mask is determined based on the second number of bits.

10. A system for accelerating delta-compressing data, wherein a target data file is being delta-compressed against a source data file and having at least one common sequence of characters with the source file, the system comprising:

at least one programmable processor; and

a non-transitory machine-readable medium storing instructions that, when executed by the at least one programmable processor, cause the at least one programmable processor to perform operations comprising:

selecting, for a computing system, a hashing function for executing the accelerating of delta-compressing of data by the computing system;

hashing a plurality of non-overlapping portions of the source data file using the selected hashing function to generate a plurality of corresponding hash values;

encoding the source data file by generating a source data file hashing table having a plurality of entries, each entry in the plurality of entries including a first part storing an encoded hash value and a second part storing encoded source file offset location corresponding to the hash value, the source data file hashing table being stored in a storage location, wherein a size of the source data file hashing table is determined based on a size of the source data file, the encoded source file offset location being encoded using a corresponding hash value and a hash mask, the encoded hash value being encoded using a portion of bits of the hash value;

comparing, upon determining a match between one or more encoded source file offset locations and one or more target file offset locations, an encoded hash value at the matching encoded source file offset location to a hash value of a portion of the target file at the matching target file offset location, the target file having a plurality of portions;

determining, based on the comparing, at least one longest common sequence of characters in the one or more portions of the source file and the one or more portions of the target file being present at the matching encoded source file offset location and the matching target file offset location;

generating, based on the determining, a patch file having at least one of the following: at least one insert instruction and at least copy instruction; and

delta-compressing the target file by replacing the target file with the generated patch file and writing the patch file into the storage location, the generated patch file having a smaller size than the target data file, wherein the one or more portions of the target file are generated by combining the one or more portions of the source file and the generated patch file.

11. The system according to claim 10 , wherein the generating the source data file hashing table further comprises

applying the hash mask to each hashed portion in the plurality of non-overlapping portions of the source data file; and

mapping, based on the applied hash mask, each hashed portion in the plurality of non-overlapping portions of the source data file to the corresponding source file offset location in the source data file hashing table.

12. The system according to claim 11 , wherein the corresponding source file offset location is determined based on a predetermined identifier corresponding to each portion in the plurality of portions, the predetermined identifier being stored in the source data file hashing table.

13. The system according to claim 12 , wherein the operations further comprise

applying the hash mask to each hash portion of the target data file; and

comparing one or more masked hash values of the target data file to one or more masked values in the source data file hashing table.

14. The system according to claim 10 , wherein each portion in the plurality of portions of the source file is 16 bytes.

15. The system according to claim 10 , wherein the encoding further comprises

initializing each entry in the source data file hashing table to a predetermined value.

16. The system according to claim 10 , wherein the plurality of portions of the target file include at least one of the following: overlapping portions, non-overlapping portions, and any combination thereof.

17. The system according to claim 10 , wherein

a predetermined number of bits is allocated to a combined size of the first and second parts, the first part having a size of a first number of bits and the second part having a size of a second number of bits;

the second number of bits is determined based on the size of the source file and is allocated from the predetermined number of bits; and

the first number of bits is determined based on bits remaining in the predetermined number of bits after the second number of bits are allocated.

18. The system according to claim 17 , wherein the hash mask is determined based on the second number of bits.

19. A computer program product for accelerating delta-compressing data, wherein a target data file is being delta-compressed against a source data file and having at least one common sequence of characters with the source file, the computer program product comprising a non-transitory machine-readable medium storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising:

selecting, for a computing system, a hashing function for executing the accelerating of delta-compressing of data by the computing system;

hashing a plurality of non-overlapping portions of the source data file using the selected hashing function to generate a plurality of corresponding hash values;

encoding the source data file by generating a source data file hashing table having a plurality of entries, each entry in the plurality of entries including a first part storing an encoded hash value and a second part storing encoded source file offset location corresponding to the hash value, the source data file hashing table being stored in a storage location, wherein a size of the source data file hashing table is determined based on a size of the source data file, the encoded source file offset location being encoded using a corresponding hash value and a hash mask, the encoded hash value being encoded using a portion of bits of the hash value;

comparing, upon determining a match between one or more encoded source file offset locations and one or more target file offset locations, an encoded hash value at the matching encoded source file offset location to a hash value of a portion of the target file at the matching target file offset location, the target file having a plurality of portions;

determining, based on the comparing, at least one longest common sequence of characters in the one or more portions of the source file and the one or more portions of the target file being present at the matching encoded source file offset location and the matching target file offset location;

generating, based on the determining, a patch file having at least one of the following: at least one insert instruction and at least copy instruction; and

delta-compressing the target file by replacing the target file with the generated patch file and writing the patch file into the storage location, the generated patch file having a smaller size than the target data file, wherein the one or more portions of the target file are generated by combining the one or more portions of the source file and the generated patch file.

20. The computer program product according to claim 19 , wherein the generating the source data file hashing table further comprises

applying the hash mask to each hashed portion in the plurality of non-overlapping portions of the source data file; and

mapping, based on the applied hash mask, each hashed portion in the plurality of non-overlapping portions of the source data file to the corresponding source file offset location in the source data file hashing table.

21. The computer program product according to claim 20 , wherein the corresponding source file offset location is determined based on a predetermined identifier corresponding to each portion in the plurality of portions, the predetermined identifier being stored in the source data file hashing table.

22. The computer program product according to claim 21 , wherein the operations further comprise

applying the hash mask to each hash portion of the target data file; and

comparing one or more masked hash values of the target data file to one or more masked values in the source data file hashing table.

23. The computer program product according to claim 19 , wherein each portion in the plurality of portions of the source file is 16 bytes.

24. The computer program product according to claim 19 , wherein the encoding further comprises

initializing each entry in the source data file hashing table to a predetermined value.

25. The computer program product according to claim 19 , wherein the plurality of portions of the target file include at least one of the following: overlapping portions, non-overlapping portions, and any combination thereof.

26. The computer program product according to claim 19 , wherein

a predetermined number of bits is allocated to a combined size of the first and second parts, the first part having a size of a first number of bits and the second part having a size of a second number of bits;

the second number of bits is determined based on the size of the source file and is allocated from the predetermined number of bits; and

the first number of bits is determined based on bits remaining in the predetermined number of bits after the second number of bits are allocated.

27. The computer program product according to claim 26 , wherein the hash mask is determined based on the second number of bits.

Assignments (5)
SECURITY INTEREST Recorded May 27, 2021
From: EXAGRID SYSTEMS, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 056372/0929 →
CORRECTIVE ASSIGNMENT TO CORRECT THE APPL. NOS. 10303656, 10114831, 10073855 AND 10067946 BY REMOVING THEM FOR THE PATENT NOS. PREVIOUSLY RECORDED ON REEL 049619 FRAME 0342. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTERESTS. Recorded Feb 9, 2021
From: EXAGRID SYSTEMS, INC.
To: ORIX GROWTH CAPITAL, LLC
Reel/Frame 056399/0163 →
SECURITY INTEREST Recorded Jun 28, 2019
From: EXAGRID SYSTEMS, INC.
To: ORIX GROWTH CAPITAL, LLC
Reel/Frame 049619/0342 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2018
From: VANDERSPEK, ADRIAN T.; TAGUE, STEVEN ALLAN
To: EXAGRID SYSTEMS, INC.
Reel/Frame 045023/0621 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 9, 2018
From: VANDERSPEK, ADRIAN T.; TAGUE, STEVEN ALLAN
To: EXAGRID SYSTEMS, INC.
Reel/Frame 045347/0913 →
Continuity (1)
Related Publication 20190251189A1 · Aug 15, 2019
Cited By (2)
US 12,218,698 US 12,438,940