simple8b-timeseries-compression

By naturalplasmoid

Simple8b-timeseries-compression Alternatives

Similar projects and alternatives to simple8b-timeseries-compression

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better simple8b-timeseries-compression alternative or higher similarity.

simple8b-timeseries-compression reviews and mentions

Posts with mentions or reviews of simple8b-timeseries-compression. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-05-14.
  • Time-Series Compression Algorithms
    7 projects | news.ycombinator.com | 14 May 2022
    One notable omission from this piece is a technique to compress integer time series with both positive and negative values.

    If you naively apply bit-packing using the Simple8b algorithm, you'll find that negative integers are not compressed. This is due to how signed integers are represented in modern computers: negative integers will have their most significant bit set [1].

    Zigzag encoding is a neat transform that circumvents this issue. It works by mapping signed integers to unsigned integers so that numbers with a small absolute value can be encoded using a small number of bits. Put another way, it encodes negative numbers using the least significant bit for sign. [2]

    If you're looking for a quick way to experiment with various time series compression algorithm I highly recommend Daniel Lemire's FastPFor repository [3] (as linked in the article). I've used the Python bindings [4] to quickly evaluate various compression algorithms with great success.

    Finally I'd like to humbly mention my own tiny contribution [5], an adaptation of Lemire's C++ Simple8b implementation (including basic methods for delta & zigzag encoding/decoding).

    I used C++ templates to make the encoding and decoding routines generic over integer bit-width, which expands support up to 64 bit integers, and offers efficient usage with smaller integers (eg 16 bit). I made a couple other minor tweaks including support for arrays up to 2^64 in length, and tweaking the API/method signatures so they can be used in a more functional style. This implementation is slightly simpler to invoke via FFI, and I intend to add examples showing how to compile for usage via JS (WebAssembly), Python, and C#. I threw my code up quickly in order to share with you all, hopefully someone finds it useful. I intend to expand on usage examples/test cases/etc, and am looking forward to any comments or contributions.

    [1] https://en.wikipedia.org/wiki/Signed_number_representation

    [2] https://en.wikipedia.org/wiki/Variable-length_quantity#Zigza...

    [3] https://github.com/lemire/FastPFor

    [4] https://github.com/searchivarius/PyFastPFor

    [5] https://github.com/naturalplasmoid/simple8b-timeseries-compr...

Stats

Basic simple8b-timeseries-compression repo stats
1
7
10.0
about 2 years ago

Sponsored
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com