Patent GB-1280488-A (GB)
Title: Data processing systems
Inventor: IV WILLIAM ALBERT CLARK
IPC: G06F17/30
Filed: 1970-11-13
Abstract: 1280488 Data storage INTERNATIONAL BUSINESS MACHINES CORP 13 Nov 1970 [31 Dec 1969] 54016/70 Heading G4C A data processing system for generating a multilevel compressed index includes means for receiving an input stream of uncompressed keys, means for generating low-level compressed keys from the input stream of uncompressed keys, means for assembling the low-level compressed keys in low-level index blocks, means for registering for a next higher level a last of the uncompressed keys for each current low-level index block, and means for generating a higherlevel compressed key from the last two of the uncompressed keys currently provided for the last two low-level index blocks by the registering means. A multi-level index is derived from the input stream of uncompressed keys by taking these, segmented into multi-key blocks, as the lowest level, and for each block (of this lowest level) taking the first key of the next block to represent it in the next higher level, each subsequently higher level containing the last key of each block of the respective next lower level to represent that block, the highest (apex) level having only one block. Concurrently, a pointer is associated with each key and each key is compressed. In the lowest level the pointer points to a corresponding data block (which includes its respecitve uncompressed key, besides data), and in each higher level the pointer points to the corresponding block of the respective next lower level. Each compressed key, besides the pointer, includes one or more key bytes (from the uncompressed key), a length byte (specifying the number of key bytes) and a factor byte (specifying the number of key bytes in the uncompressed key to high-order of those included in the compressed key). Compression of a given key in a given level I is done on the basis of: E BI  viz. the number of byte positions to high order of the highest-order unequal byte position when the uncompressed key is compared with the preceding uncompressed key in the same level I, E AI  viz. same as E BI  except that the comparison is between the preceding uncompressed key mentioned and its preceding uncompressed key in the same level, E BO  viz. same as E BI  except that the comparison is done between the uncompressed key and the uncompressed key preceding it where the former appears in the lowest level, E AO  viz. same as E BO  except that the comparison is between the preceding uncompressed key mentioned and its preceding uncompressed key in the lowest level. For the lowest level, a quantity T is set to zero if and only if the length byte of the preceding compressed key was zero. A quantity S is defined as E BI -E AI  for the level concerned (E BO -E AO  for the lowest level). For a compressed key in the lowest level, the length byte L and the factor byte F are given values as follows (and bytes are selected from the uncompressed key for incorporation in the compressed key in accordance with them): (a) If S is zero and T is non-zero, or if S is negative, L is zero and F is E BO  plus one. (b) If S and T are zero, L is one and F is E BO . (c) If S is positive and T is zero, L is S plus one and F is E AO . (d) If S is positive and T is non-zero, L is S and F is E AO  plus one. For a compressed key in a level I other than the lowest level: (a) If S is zero or negative, L is E BO -E BI  plus one and F is E BI . (b) If S is positive, L is E BO -E BI  and F is E AI  plus one. Searching in the index requires searching of only one block per level.