> delta | diff | compress <
// デルタ符号化 – 絶対値ではなく差分を保存する
シーケンシャルデータ
連続する値の差分が小さいデータ向けに最適化されています。
複数の方式
Simple・XOR・ZigZag など複数のデルタ符号化方式をサポートします.
高い圧縮効率
シーケンシャルデータに必要なビット幅を削減します。
>> 技術情報
デルタ符号化の仕組み:
デルタ符号化では最初の値をそのまま保存し、その後は連続する値同士の差分のみを保存します。これにより、ゆっくり変化するデータを小さな数値列に変換し、高い圧縮率を実現します。XOR デルタは減算の代わりにビット単位の XOR を使用します。ZigZag 符号化は符号付き整数を符号なし整数にマッピングし、圧縮効率をさらに高めます。
デルタの例:
シンプルなデルタ符号化: [100, 102, 107, 110, 108] → [100, 2, 5, 3, -2] XOR デルタ: [15, 14, 12, 8, 0] → [15, 1, 2, 4, 8] ZigZag デルタ: [10, 8, 12, 9] → [10, -2, 4, -3] → [10, 3, 8, 5] (エンコード後)
デルタ符号化を使う理由:
- >時系列データの圧縮
- >センサーデータの保存
- >音声・映像のエンコード
- >データベース圧縮
- >ネットワークプロトコル
>> よくある質問
デルタ符号化とは何ですか?
デルタ符号化は、連続するデータ値そのものではなく、それらの差分を保存するデータ圧縮手法です。隣り合う値が似ている場合、差分は小さくなり、必要なビット数も少なくて済みます。
Simple と XOR デルタの違いは?
Simple デルタは減算(現在値 − 前の値)を使い、XOR デルタはビット単位の XOR 演算を使います。XOR デルタはオーバーフローを気にせずに逆変換でき、ビットパターンが似ているデータに向いています。Simple デルタは数値列を直感的に扱いたい場合に便利です。
ZigZag 符号化とは何ですか?
ZigZag 符号化は、符号付き整数を小さな絶対値を保ったまま符号なし整数にマッピングします。例えば -1 を 1、1 を 2、-2 を 3 のようにエンコードし、小さな負の値も小さな正の値と同様によく圧縮できるようにします。
デルタ符号化はいつ有効ですか?
デルタ符号化は、ソート済みリスト、時系列データ、連番 ID、ゆっくり変化するセンサー値、音声サンプルなど、隣接する値同士が強く相関しているデータに特に有効です。