CA2581065C

Systems and methods for searching and storage of data

Abstract

Systems and methods enabling search of a repository for the location of data that is similar to input data, using a defined measure of similarity, in a time that is independent of the size of the repository and linear in a size of the input data, and a space that is proportional to a small fraction of the size of the repository. The similar data segments thus located are further analyzed to determine their common (identical) data sections, regardless of the order and position of the common data sections in the repository. Remote operations are accomplished with significantly reduced system bandwidth by implementing remote differencing operations.

CA2581065C, drawing sheet 1
Sheet 1 of 23

Term

Term ended

Expired 15 September 2025, 1 year ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

28 claims: 13 independent, 15 dependent

  1. 1
    CA 02581065 2012-12-13 x CLAIMS:1. A system for providing input data to a repository (53) to search repository data in the repository for data that are similar to the input data, the input data being divided into one or more input chunks (51), the system comprising: means for, for each input chunk, calculating a corresponding set of input distinguishing characteristics (lOCs), each set of IDCs comprising a plurality of distinguishing characteristics (55i to 59i). said means arranged to partition said respective input chunk into a plurality of seeds(s), each seed being a smaller part of said respective input chunk and ordered in a seed sequence and to apply a hash function to each of the seeds to generate a plurality of hash values wherein each seed yields one hash value, characterised in that: said calculating means is operable to select a subset of the plurality of hash values;determine positions of the seeds within the seed sequence corresponding to the selected subset of hash values;apply a function to the determined positions to determine corresponding other positions within the seed sequence;and define the set of distinguishing characteristics as the hash values of the seeds at the determined other positions.
  2. 3
    A system for searching in repository data for data that are similar to an input data, the repository data being divided into one or more repository chunks (50), the system comprising:means for(1604), foreach repository chunk, calculating a corresponding set of repository distinguishing characteristics (ROCs), each set of RDCs comprising a plurality of distinguishing characteristics (55r to 59r), said means arranged to partition said respective repository chunk into a CA 02581065 2012-12-13 plurality of seeds, each seed being a smaller part of said respective repository chunk and ordered in a seed sequence and to apply a hash function to each of the seeds to generate a plurality of hash values wherein each seed yields one hash value;means for maintaining an index (44) associating each set of RDCs and the corresponding repository chunk;means for comparing input distinguishing characteristics (55i to 59i) of an input chunk (51) of input data to one or more sets of RDCs stored in the index to determine whether a similarity exists between the input chunk and the corresponding repository chunk, characterised in that: said comparing means is operable to determine a similarity exists if a similarity threshold (j) of a set of input distinguishing characteristics is found in a set of RDCs stored in the index;and in that said calculating means is operable to select a subset (k) of the plurality of hash values;to determine positions of the seeds within the seed sequence corresponding to the selected subset of hash values;to apply a function to the determined positions to determine corresponding other positions within the seed sequence;and to define the set of distinguishing characteristics as the hash values of the seeds at the determined other positions.
  3. 10
    A method of searching in repository data for data that are similar to an input data, wherein the repository data is divided into one or more repository chunks (50), the method comprising:for each repository chunk (52), calculating a corresponding set of repository distinguishing characteristics (RDCs) (55r to 59r), each set of RDCs comprising a plurality (n) of distinguishing characteristics (55r to 59r);maintaining an index (44) associating each set of RDCs and the corresponding repository chunk;calculating input distinguishing characteristics (55i to 59i) (IDCs) for an input chunk (51) of data;comparing the IDCs (55i to 59i) to one or more sets of RDCs (55r to 59r) stored in the index (44) to determine if a similarity exists between the input chunk and the corresponding repository chunk, wherein the RDCs and the IDCs are obtained by: AMENDED SHEET CA 02581065 2007-03-14 partitioning the respective data chunk (51,52) into a plurality of seeds (s), each seed being a smaller part of the respective data chunk and ordered in a seed sequence;applying a hash function to each of the seeds to generate a plurality of hash values, wherein each seed yields one hash value;characterised in that a set of IDCs is calculated for each input data chunk, the set comprising a plurality (k) of distinguishing characteristics, said set being compared with the sets of RDCs;in that it is determined that similarity exists if a similarity threshold (j) of the distinguishing characteristics in the set of IDCs is found in a set of RDCs stored in the index;and in that each set of RDCs and IDCs is obtained by the further steps of selecting a subset (k) of the plurality of hash values;determining positions of the seeds within the seed sequence corresponding to the selected subset of hash values;applying a function to the determined positions to determine corresponding other positions within the seed sequence;and defining the set of distinguishing characteristics as the hash values of the seeds at the determined other positions.
  4. 16
    The method of any of claims 10 to 15, wherein the method is used for at least one of:data factoring, and data backup.
  5. 17
    The method of any of claims 10 to 16, wherein the similarity threshold is met when a predetermined number of the distinguishing characteristics in the set of IDCs is found in a set of RDCs.
  6. 18
    The method of any of claims 10 to 17, wherein the subset (k) of the plurality of hash values are the k largest mathematical hash values in a set, and wherein the function which is applied to the determined positions is to take the next sequential seed relative to each seed corresponding to each of the k largest mathematical hash values.
  7. 19
    The method of any of claims 10 to 18, wherein the hash function is selected from a rolling hash function and a modular hash function. AMENDED SHEET CA 02581065 2007-03-14
  8. 20
    The method of any of claims 10 to 19, wherein the sets of RDCs are stored in the index as at least one of:a binary tree, a B tree, a sorted list, and a hash table.
  9. 21
    The method of any of claims 10 to 20, wherein each seed is a consecutive sequence of base elements and has the same seed size s.
  10. 23
    The method of any of claims 10 to 22, wherein the step of comparing the IDCs to one or more sets of RDCs to determine if a similarity exists is conducted in a time independent of a size of the repository and linear in a size of the input data.
  11. 24
    A computer-readable medium encoded with computer-executable instructions that cause a computer to perform a method comprising identifying input data in repository data wherein the repository data comprise repository data chunks and the input data comprise input data chunks, and wherein each repository data chunk has a corresponding set of one or more repository data chunk distinguishing characteristics (RDCs), the method including the steps of any of claims 10 to 23.
  12. 25
    A method of searching in repository data for data that is similar to an input data wherein the repository data is divided into one or more repository chunks (52), the method comprising:for each repository chunk (52), calculating a corresponding set of repository distinguishing characteristics, each set of RDCs comprising a plurality of distinguishing characteristics (55r to 59r) and being obtained by partitioning the respective data chunk into a plurality of seeds (s), each seed being a smaller part of the respective data chunk and ordered in a seed sequence, and applying a hash function to each of the seeds to generate a plurality of hash values, wherein each seed yields one hash value;AMENDED SHEET CA 02581065 2007-03-14 maintaining an index (44) associating each set of RDCs and the corresponding repository chunk;comparing input distinguishing characteristics (55i to 59i) of an input chunk of input data to one or more sets of RDCs stored in the index to determine whether a similarity exists between the input chunk and the corresponding repository chunk, characterised in that: it is determined that a similarity exists between the input chunk and the corresponding repository chunk if a similarity threshold (j) of the distinguishing characteristics in the set of IDCs is found in a set of RDCs stored in the index;and in that the set of RDCs is obtained by: selecting a subset (k) of the plurality of hash values;determining positions of the seeds within the seed sequence corresponding to the selected subset of hash values;applying a function to the determined positions to determine corresponding other positions within the seed sequence;and defining the set of distinguishing characteristics as the hash values of the seeds at the determined other positions.
  13. 27
    A method for providing input data to a repository (53) to search repository data in the repository for data that is similar to the input data, the method comprising:dividing the input data into one or more input chunks (51);calculating a set of input distinguishing characteristics (IDCs) for each chunk, the set of input distinguishing characteristics comprising a plurality of characteristics (55i to 59i) and being obtained by: AMENDED SHEET CA 02581065 2012-12-13 partitioning the respective data chunk into a plurality of seeds (s), each seed being a smaller part of the respective data chunk and ordered in a seed sequence;applying a hash function to each of the seeds to generate a plurality of hash values wherein each seed yields one hash value;selecting a subset (k) of the plurality of hash values;determining positions of the seeds within the seed sequence corresponding to the selected subset of hash values;applying a function to the determined positions to determine corresponding other positions within the seed sequence;and defining the set of distinguishing characteristics as the hash values of the seeds at the determined other positions.