Efficient algorithm and protocol for remote differential compression on a local device
First Claim
1. A method for updating an object between two or more computing devices using remote differential compression techniques, comprising:
- partitioning a local object into chunks;
computing a signature and a chunk length for each chunk of the local object, wherein each of the signatures and the chunk lengths create a local chunk list;
generating a local recursive chunk list by recursively chunking the local chunk list;
comparing a remote recursive chunk list associated with a remote object to the local recursive chunk list to identify any differences between the local chunk list and a remote chunk list; and
comparing a remote chunk list associated with a remote object to the local chunk list to identify any differences between the local object and a remote object.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention is used to update objects over limited bandwidth networks. Objects are updated between two or more computing devices using remote differential compression (RDC) techniques such that required data transfers are minimized. In one aspect, efficient large object transfers are achieved by recursively applying the RDC algorithm to its own metadata; a single or multiple recursion step(s) may be used in this case to reduce the amount of metadata sent over the network by the RDC algorithm. Objects and/or signature and chunk length lists can be chunked by locating boundaries at dynamically determined locations. A mathematical function evaluates hash values associated within a horizon window relative to potential chunk boundary.
-
Citations
31 Claims
-
1. A method for updating an object between two or more computing devices using remote differential compression techniques, comprising:
-
partitioning a local object into chunks;
computing a signature and a chunk length for each chunk of the local object, wherein each of the signatures and the chunk lengths create a local chunk list;
generating a local recursive chunk list by recursively chunking the local chunk list;
comparing a remote recursive chunk list associated with a remote object to the local recursive chunk list to identify any differences between the local chunk list and a remote chunk list; and
comparing a remote chunk list associated with a remote object to the local chunk list to identify any differences between the local object and a remote object. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer-readable medium having computer-executable instructions for updating an object over a communication channel between two or more computing devices using remote differential compression techniques, comprising:
-
partitioning a local object into chunks;
creating a local chunk list by computing a signature and a chunk length for each chunk of the local object;
generating a local recursive chunk list;
comparing a remote recursive chunk list associated with a remote object to the local recursive chunk list to identify any differences between the local chunk list and a remote chunk list;
comparing a remote chunk list associated with a remote object to the local chunk list to identify any differences between the local object and a remote object; and
requesting at least one chunk from the remote object when the comparison determines a difference and when at least one chunk from the remote object has been requested, assembling an object with the at least one chunk. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. An apparatus for updating an object over a communication channel between two or more computing devices using remote differential compression techniques, comprising:
-
a network connection device coupling a local device to a remote device;
a data store; and
an application configured to perform actions, including partitioning a local object into chunks;
creating a local chunk list by computing a signature and a chunk length for each chunk of the local object;
generating a local recursive chunk list;
storing the local recursive chunk list in the data store;
receiving a remote recursive chunk list using the network connection device list from the remote device;
comparing the remote recursive chunk list to the local recursive chunk list to identify any differences between the local chunk list and a remote chunk list;
comparing the remote chunk list to the local chunk list to identify any differences between the local object and a remote object; and
requesting at least one chunk from the remote device when the comparison determines a difference and when at least one chunk from the remote object has been requested, assembling an object with the at least one chunk. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31)
-
Specification