RLE Data Compression

When using the run-length encoding (RLE) compression scheme, Essbase compresses consecutive, repetitive values—any value, including zero, that repeats three or more times consecutively. Essbase tracks each repeating value and the number of times it repeats consecutively.

With RLE compression, Essbase uses 8 bytes, plus a 16-byte repetition factor, for a total of 24 bytes for the set of three or more consecutive, repetitive cells. For values that are not repeated or are repeated only twice, Essbase uses 8 bytes for each value.

In the following representation of a data block, Essbase considers the three consecutive #MISSING values in the first row (cells 2, 3, and 4) and the left-most #MISSING value in the second row (cell 5) as repeating values. The right-most #MISSING value in the second row (cell 8) is not a repeating value because it is separated from the cell 5 #MISSING value by cells 6 and 7, which have data values (16 and 7, respectively).

Data values in data block

25         #MISSING   #MISSING   #MISSING
#MISSING   16         7          #MISSING

When the data block is fully expanded in memory, Essbase uses 64 bytes (8 bytes * 8 cells). When the data is stored uncompressed on disk, Essbase uses 24 bytes (8 bytes * 3 cells with data—cells 1, 6, 7).

When the data is stored compressed on disk, Essbase uses 56 bytes:

Essbase also uses a 72-byte block header for each block, whether or not the block is compressed.