IP Library Granted Patent US 10,498,356
Granted Patent B2
US 10,498,356 · App. 13/273,080 · Granted Dec 3, 2019

Systems and methods for version chain clustering

Inventors: Mark Bennett Hecker (Northborough, MA); Ashok T. Ramu (Waltham, MA)
Assignee: Exagrid Systems, Inc.
H03M7/3091G06F16/1756H03M7/3093
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,498,356
App. No.
13/273,080
Granted
Dec 3, 2019
Kind
B2
Abstract

A system, a method and a computer program product for storing data, which include receiving a data stream having a plurality of transactions that include at least one portion of data, determining whether at least one portion of data within at least one transaction is substantially similar to at least another portion of data within at least one transaction, clustering together at least one portion of data and at least another portion of data within at least one transaction, selecting one of at least one portion of data and at least another portion of data as a representative of at least one portion of data and at least another portion of data in the received data stream, and storing each representative of a portion of data from each transaction in the plurality of transactions, wherein a plurality of representatives is configured to form a chain representing the received data stream.

Claims (80)

1. A computer-implemented method for storing data, comprising:

receiving a data stream, wherein the data stream includes a plurality of transactions, each transaction in the plurality of transactions includes a plurality of versions of at least one data file, each transaction in the plurality of transactions represents a logical unit of the data stream;

determining whether at least one first version in the plurality of versions within a first transaction in the plurality of transactions is similar to at least one second version in the plurality of versions within the first transaction;

grouping, based on the determination of similarity of versions within the first transaction, at least a portion of the plurality of versions within the first transaction into a cluster;

selecting, based on grouping, a representative of the first transaction to represent all versions within the first transaction for storing, the representative being a version in the plurality of versions in the first transaction, wherein the grouped versions within the first transaction not selected as the representative are determined to be dependent on the selected representative, each version within the first transaction not selected as the representative is recomputed to represent a content difference between the selected representative and that version, wherein versions in the first transaction not selected as the representative are independent of one another;

identifying, based on the determining, the grouping and the selecting, a representative for each transaction in the plurality of transactions; and

storing each identified representative, wherein a plurality of identified representatives is configured to form a chain representing the received data stream.

2. The method according to claim 1 , wherein the version in the plurality of versions is a compressed version of the data file.

3. The method according to claim 1 , wherein the representative is a compressed representative of the plurality of versions within the first transaction.

4. The method according to claim 1 , wherein the representative is a delta-compressed representative of the plurality of versions within the first transaction.

5. The method according to claim 1 , wherein the versions within the first transaction not selected representatives are independent of each other, thereby reducing a number of dependencies among the versions not selected representatives.

6. The method according to claim 1 , further comprising

determining whether a version within the first transaction in the plurality of transactions is designated for deletion;

determining a representative that represents the determined version; and

deleting the representative that represents the determined version, and deleting all versions that the representative represents.

7. The method according to claim 1 , further comprising

determining whether a version within the first transaction in the plurality of transactions is designated for deletion;

determining a representative that represents the determined version; and

deleting the determined version without deleting the representative that represents the determined version and without deleting other versions within the first transaction that the representative represents.

8. The method according to claim 2 , wherein the storing further comprises storing compressed versions of the data file in at least one storage location.

9. The method according to claim 8 , further comprising

uncompressing the representative of the first transaction;

retrieving, based on the uncompressing, at least one of an uncompressed version and an uncompressed another version of the data file from the at least one storage location.

10. The method according to claim 9 , wherein a processing time for the retrieving is based on a number of representatives configured to represent at least one transaction in the plurality of transactions and configured to be uncompressed to retrieve the uncompressed version.

11. The method according to claim 1 , further comprising repeating the determining, the grouping, and the selecting for each version of the data file in the received data stream.

12. The method according to claim 1 , further comprising storing versions of data file that are not selected as a representative.

13. A system for storing data, comprising:

at least one processor; and

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

receiving a data stream, wherein the data stream includes a plurality of transactions, each transaction in the plurality of transactions includes a plurality of versions of at least one data file, each transaction in the plurality of transactions represents a logical unit of the data stream;

determining whether at least one first version in the plurality of versions within a first transaction in the plurality of transactions is similar to at least one second version in the plurality of versions within the first transaction;

grouping, based on the determination of similarity of versions within the first transaction, at least a portion of the plurality of versions within the first transaction into a cluster;

selecting, based on grouping, a representative of the first transaction to represent all versions within the first transaction for storing, the representative being a version in the plurality of versions in the first transaction, wherein the grouped versions within the first transaction not selected as the representative are determined to be dependent on the selected representative, each version within the first transaction not selected as the representative is recomputed to represent a content difference between the selected representative and that version, wherein versions in the first transaction not selected as the representative are independent of one another;

identifying, based on the determining, the grouping and the selecting, a representative for each transaction in the plurality of transactions; and

storing each identified representative, wherein a plurality of identified representatives is configured to form a chain representing the received data stream.

14. The system according to claim 13 , wherein the version in the plurality of versions is a compressed version of the data file.

15. The system according to claim 13 , wherein the representative is a compressed representative of the plurality of versions within the first transaction.

16. The system according to claim 13 , wherein the representative is a delta-compressed representative of the plurality of versions within the first transaction.

17. The system according to claim 13 , wherein the versions within the first transaction not selected representatives are independent of each other, thereby reducing a number of dependencies among the versions not selected representatives.

18. The system according to claim 13 , wherein instructions further comprise

determining whether a version within the first transaction in the plurality of transactions is designated for deletion;

determining a representative that represents the determined version; and

deleting the representative that represents the determined version, and deleting all versions that the representative represents.

19. The system according to claim 13 , wherein instructions further comprise

determining whether a version within the first transaction in the plurality of transactions is designated for deletion;

determining a representative that represents the determined version; and

deleting the determined version without deleting the representative that represents the determined version and without deleting other versions within the first transaction that the representative represents.

20. The system according to claim 14 , wherein the storing further comprises storing compressed versions of the data file in at least one storage location.

21. The system according to claim 20 , wherein instructions further comprise

uncompressing the representative of the first transaction;

retrieving, based on the uncompressing, at least one of an uncompressed version and an uncompressed another version of the data file from the at least one storage location.

22. The system according to claim 21 , wherein a processing time for the retrieving is based on a number of representatives configured to represent at least one transaction in the plurality of transactions and configured to be uncompressed to retrieve the uncompressed version.

23. The system according to claim 13 , wherein instructions further comprise repeating the determining, the grouping, and the selecting for each version of the data file in the received data stream.

24. The system according to claim 13 , wherein instructions further comprise storing versions of data file that are not selected as a representative.

25. A computer program product comprising non-transitory machine-readable medium storing instructions that, when executed by the at least one processor, cause the at least one processor to perform operations comprising:

receiving a data stream, wherein the data stream includes a plurality of transactions, each transaction in the plurality of transactions includes a plurality of versions of at least one data file, each transaction in the plurality of transactions represents a logical unit of the data stream;

determining whether at least one first version in the plurality of versions within a first transaction in the plurality of transactions is similar to at least one second version in the plurality of versions within the first transaction;

grouping, based on the determination of similarity of versions within the first transaction, at least a portion of the plurality of versions within the first transaction into a cluster;

selecting, based on grouping, a representative of the first transaction to represent all versions within the first transaction for storing, the representative being a version in the plurality of versions in the first transaction, wherein the grouped versions within the first transaction not selected as the representative are determined to be dependent on the selected representative, each version within the first transaction not selected as the representative is recomputed to represent a content difference between the selected representative and that version, wherein versions in the first transaction not selected as the representative are independent of one another;

identifying, based on the determining, the grouping and the selecting, a representative for each transaction in the plurality of transactions; and

storing each identified representative, wherein a plurality of identified representatives is configured to form a chain representing the received data stream.

26. The computer program product according to claim 25 , wherein the version in the plurality of versions is a compressed version of the data file.

27. The computer program product according to claim 25 , wherein the representative is a compressed representative of the plurality of versions within the first transaction.

28. The computer program product according to claim 25 , wherein the representative is a delta-compressed representative of the plurality of versions within the first transaction.

29. The computer program product according to claim 25 , wherein the versions within the first transaction not selected representatives are independent of each other, thereby reducing a number of dependencies among the versions not selected representatives.

30. The computer program product according to claim 25 , wherein instructions further comprise

determining whether a version within the first transaction in the plurality of transactions is designated for deletion;

determining a representative that represents the determined version; and

deleting the representative that represents the determined version, and deleting all versions of data that the representative represents.

31. The computer program product according to claim 25 , wherein instructions further comprise

determining whether a version within the first transaction in the plurality of transactions is designated for deletion;

determining a representative that represents the determined version; and

deleting the determined version without deleting the representative that represents the determined version and without deleting other versions within the first transaction that the representative represents.

32. The computer program product according to claim 26 , wherein the storing further comprises storing compressed versions of the data file in at least one storage location.

33. The computer program product according to claim 32 , wherein instructions further comprise

uncompressing the representative of the first transaction;

retrieving, based on the uncompressing, at least one of an uncompressed version and an uncompressed another version of the data file from the at least one storage location.

34. The computer program product according to claim 33 , wherein a processing time for the retrieving is based on a number of representatives configured to represent at least one transaction in the plurality of transactions and configured to be uncompressed to retrieve the uncompressed version.

35. The computer program product according to claim 25 , wherein instructions further comprise repeating the determining, the grouping, and the selecting for each version of the data file in the received data stream.

36. The computer program product according to claim 25 , wherein instructions further comprise storing versions of data file that are not selected as a representative.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Jun 3, 2021
From: COMERICA BANK
To: EXAGRID SYSTEMS, INC.
Reel/Frame 056425/0108 →
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 →
SECURITY INTEREST Recorded Oct 1, 2018
From: EXAGRID SYSTEMS, INC.
To: COMERICA BANK
Reel/Frame 047172/0685 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2011
From: HECKER, MARK BENNETT; RAMU, ASHOK T
To: EXAGRID SYSTEMS, INC.
Reel/Frame 027058/0850 →
Continuity (2)
Provisional Application 61534166 · Sep 13, 2011
Related Publication 20130066868A1 · Mar 14, 2013
Cited By (2)
US 12,204,890 US 12,561,256