Patent ID: 7428553

Claim:
A method of generating an index structure for metadata for storage in a computer-readable storage medium, wherein the metadata is divided into fragments, and the index structure is for use in locating and extracting a portion of the metadata within a fragment, the method comprising: storing in the computer readable storage medium a key index list section comprising a list of multi-keys, each multi-key corresponding to a combination of fields of the metadata, wherein each multi-key is a plurality of keys used simultaneously to locate and extract the fragment of metadata; storing in the computer readable storage medium a key index section; and storing in the computer readable storage medium a sub-key index section, wherein for a multi-key of the key index list: the sub-key index section comprises ranges of values of the multi-key and identification information on ones of the fragments of the metadata corresponding to the values of the multi-key, and the key index section comprises representative key values representing the respective ranges of values of the multi-key, wherein with respect to comparison of the values of a multi-key in size, the multi-key comprises fields (k 1 , k 2 , k 3 . . . kn) of the metadata which are prioritized (k 1 >k 2 >k 3 > . . . Kn), and the combined fields are compared in sequence, starting from a first field having a highest order of priority, wherein the values are compared on an arithmetic basis where the values of the multi-key are numerical or ranked in lexicographical order where the values of the multi-key are alphabetical, wherein for two multi-key values, (a 1 , a 2 , . . . , an) and (b 1 , b 2 , . . . , bn): (a 1 , a 2 , . . . , an) is larger than (b 1 , b 2 , . . . , bn) if and only if there exists an integer i (0≦i≦n−1) such that for every j (0≦j≦n−1), aj=bj and ai>bi; (a 1 , a 2 , . . . , an) is smaller than (b 1 , b 2 , . . . , bn) if and only if there exists an integer i (0≦i≦n−1) such that for every j (0≦j≦n−1), aj=bj and ai<bi; and (a 1 , a 2 , . . . , an) is equal to (b 1 , b 2 , . . . , bn) if and only if for every j (0≦j≦n−1), ai=bi.