時系列圧縮
このページでは、MongoDB が時系列コレクション内のデータを圧縮する方法と、圧縮を最適化する方法について説明します。
デフォルトの圧縮アルゴリズム
時系列コレクションは zstd圧縮を使用します。これはグローバルデフォルトの圧縮アルゴリズム snappy とは異なります。
列圧縮
MongoDB 5.2 以降では、時系列コレクションで列圧縮機能を使用できます。この機能には多数のイノベーションが導入されており、これらを組み合わせることで、実用的な圧縮の大幅な改善、ディスク上のデータの全体的ストレージ容量削減、読み取り性能の向上を実現しています。
これらの機能強化により、 zstd
で圧縮された場合、ディスク上のデータのサイズがさらに縮小され、WiredTiger キャッシュで使用される領域も大幅に削減されます。
導入される圧縮のタイプは次のとおりです。
デルタ エンコーディング
オブジェクト圧縮
配列圧縮( MongoDB 6.0以降)
実行長エンコーディング(RLE)
デルタ エンコーディング(デルタ圧縮)
デルタ エンコーディングは、時系列コレクション内のデータを時系列の特徴を活用します。 絶対値を保存する代わりに、測定値が互いに迅速に変化しないことを前提としています。 このアプローチでは、測定値間の差のみを保存することで必要な情報の量が減ります。
デルタ エンコーディングのデルタ(デルタ圧縮のデルタ)
単調に増加するデータの場合、デルタエンコーディングのデルタは、デルタ自体のデルタを計算することで、保存される数値のサイズをさらに最小限に抑えることができます。
オブジェクトおよび配列の圧縮
列圧縮により、ドキュメント内でオブジェクトと配列を使用している場合、それらの埋め込みフィールドがドキュメントのルートレベルに存在していても、同じ圧縮利点が得られます。
詳細
圧縮を最適化する方法については、「 圧縮の最適化 」を参照してください。