Patent ID: 7698285

Claim:
A method comprising: determining, by a computing device, ordered sets of index values, wherein each of the index values identifies a position along one of a plurality of dimensions of a multidimensional dataset at which a data value exists in the multidimensional dataset, wherein each of the ordered sets of index values corresponds to a different one of the plurality of dimensions; calculating, by the computing device, sets of respective offset values for the ordered sets of index values, wherein each of the offset values represents a difference between a current index value in one of the sets of index values and a preceding index value in the one of the sets of index values, wherein the preceding index value immediately precedes the current index value according to the order of the one of the sets of index values; generating a data dictionary that maps unique numerical data identifiers to unique data values in the multidimensional dataset in a one-to-one mapping; applying a compression algorithm to the sets of offset values and the data dictionary to generate a compressed version of the multidimensional dataset, wherein the compressed version of the multidimensional dataset includes a compressed data dictionary and compressed lists of offset values; outputting the compressed version of the multidimensional dataset; constructing a second multidimensional dataset as a result for a received query, wherein constructing the second multidimensional dataset comprises: identifying a multidimensional subset comprising elements of the first multidimensional dataset that satisfy at least a portion of the query, wherein the multidimensional subset is defined by an intersection of the first multidimensional dataset and the second multidimensional dataset; extracting the multidimensional subset from the compressed version of the first multidimensional dataset; applying a decompression algorithm to the multidimensional subset extracted from the compressed version of the first multidimensional dataset; extracting a remaining portion of the second multidimensional dataset from a database, wherein the remaining portion comprises elements of the query that were not satisfied by the multidimensional subset, wherein the remaining portion is defined by the difference between the second multidimensional dataset and the multidimensional subset; and combining the multidimensional subset and the remaining portion to form the second multidimensional dataset; and outputting the second multidimensional dataset.