Encoder similar to DiffKeyDeltaEncoder but supposedly faster. Compress using: - store
size of common prefix - save column family once in the first KeyValue - use integer compression
for key, value and prefix (7-bit encoding) - use bits to avoid duplication key length, value
length and type if it same as previous - store in 3 bits length of prefix timestamp with previous
KeyValue's timestamp - one bit which allow to omit value if it is the same Format: - 1 byte: flag
- 1-5 bytes: key length (only if FLAG_SAME_KEY_LENGTH is not set in flag) - 1-5 bytes: value
length (only if FLAG_SAME_VALUE_LENGTH is not set in flag) - 1-5 bytes: prefix length - ...
bytes: rest of the row (if prefix length is small enough) - ... bytes: qualifier (or suffix
depending on prefix length) - 1-8 bytes: timestamp suffix - 1 byte: type (only if FLAG_SAME_TYPE
is not set in the flag) - ... bytes: value (only if FLAG_SAME_VALUE is not set in the flag)
Return first key in block as a cell. Useful for indexing. Typically does not make a deep copy
but returns a buffer wrapping a segment of the actual block's byte array. This is because the
first key in block is usually stored unencoded.
block - encoded block we want index, the position will not change