Time-Series Compression Algorithms
Question for people who've implemented these kind of compression schemes: some of these mechanisms require local context (rle and s8b) how do you handle random access in these cases? Is the metadata embedded as a sort of key frame to which we have to advance before decoding the value? Or as a separate block in the headers?RLE especially sounds like it could degenerate into a binary search per lookup, maybe aided by caching the bounds of the last run and assuming locality and linear-ish usage?This might sound obvious, but wasn't mentioned in the article, you can also apply integer based compression schemes on dictionary encoded data.And floating point values don't always need those 64bits when the use case and input data don't require that level of precision.