View a markdown version of this page

Amazon DocumentDB 8.0 でのディクショナリベースの圧縮の管理 - Amazon DocumentDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon DocumentDB 8.0 でのディクショナリベースの圧縮の管理

Amazon DocumentDB 8.0 では、LZ4 に代わる改善された方法として、新しいドキュメント圧縮アルゴリズム Zstd が導入されました。圧縮アルゴリズムとして Zstd を選択して Amazon DocumentDB 8.0 コレクションでディクショナリ圧縮を有効にすると、コレクションのドキュメントがサンプリングされ、カスタム圧縮ディクショナリが作成されます。新規および更新されたドキュメントは、このディクショナリと Zstd アルゴリズムを使用して圧縮されます。このアプローチは通常、特に一貫したドキュメントスキーマまたは繰り返しフィールド名を持つコレクションの場合、標準の圧縮方法よりも高い圧縮率を実現します。

LZ4 は、高速な圧縮と解凍のために設計されたアルゴリズムです。顕著な圧縮を達成しながら、CPU でライトであることが知られています。Zstd は、デフォルト設定でより多くの CPU を使用するが、LZ4 よりも優れた圧縮率を実現する汎用アルゴリズムです。ディクショナリを使用すると、ほとんどの JSON ドキュメントの圧縮がさらに向上します。Zstd アルゴリズムには次のような利点があります。

  • ストレージコストの削減 — 圧縮率が高いほど、ストレージ使用量が少なくなり、コストが低くなります。

  • 低 I/O — 圧縮ドキュメントでは I/O が少なくて済み、パフォーマンスが向上する可能性があります。

  • コレクション用に最適化 — ディクショナリは、コレクションのデータパターンに合わせて特別にトレーニングされます。

注記

ディクショナリベースの圧縮は、Amazon DocumentDB バージョン 3.6、4.0、5.0 ではサポートされていません。

パフォーマンスに関する考慮事項

Zstd 圧縮には、次のトレードオフが含まれます。

  • ストレージと CPU の比較 — Zstd 圧縮では圧縮率が向上しますが、LZ4 圧縮と比較して CPU リソースがわずかに多く使用される場合があります。

  • 初期圧縮 — 新しいコレクションは、効果的なディクショナリをトレーニングするために十分なドキュメントが挿入されるまで、最適な圧縮を達成できない場合があります。現在、コレクションに少なくとも 100 のドキュメントがある場合、Amazon DocumentDB はディクショナリをトレーニングします。

  • ワークロードタイプ — データ全体がバッファキャッシュに収まる読み込み負荷の高いワークロードでは、解凍オーバーヘッドによりレイテンシーと CPU 使用率が増加する可能性があります。

Zstd 圧縮は、小さなドキュメント、ドキュメント配列、繰り返しフィールド名を持つコレクションに特に効果的です。

ディクショナリベースの圧縮の有効化

新しいコレクションでは、次のコマンドを使用して Zstd 圧縮を有効にできます。

db.createCollection("myCollection", { storageEngine: { documentDB: { compression: { enable: true, algorithm: "zstd" } } } } )

既存のコレクションで圧縮を有効化または変更することもできます。

db.runCommand({ collMod: "myCollection", storageEngine: { documentDB: { compression: { enable: true, algorithm: "zstd" } } } })

クラスター内のすべての新しいコレクションに対して Zstd アルゴリズムを有効にするには、クラスターdefault_collection_compressionパラメータグループの パラメータを に設定しますzstd。

開始方法

Amazon DocumentDB 8.0 では、新しいコレクションはデフォルトで Zstd 圧縮を使用します。新しいコレクションの圧縮を無効にするには、クラスターdefault_collection_compressionパラメータグループの パラメータを に設定しますdisabled。

Amazon DocumentDB 8.0 以降、 enabledは の有効な値ではなくなりましたdefault_collection_compression。有効な値は zstd、lz4、および disabled です。

モニタリング

次のいずれかのコマンドを使用して、コレクションの圧縮情報を表示できます。

  • db.runCommand({ collStats: "myCollection" }) または

  • db.collection.stats()

これらのコマンドは、圧縮率の計算に使用できる主要な統計を返します。

  • compression.algorithm — 使用されるアルゴリズム (lz4 または zstd)

  • storageSize — 圧縮後にコレクションで使用される実際のストレージ。この数値にはフラグメント化 (データベースページの未使用のスペース) が含まれていることに注意してください。

  • avgObjSize — 解凍されたコレクションのドキュメントの平均論理サイズ。コレクションに 20,000 件を超えるドキュメントがある場合、この数は 20,000 件のドキュメントのサンプルに基づく概算値になることに注意してください。

  • size — 圧縮なしのコレクションの論理サイズ。この数は、avgObjSize にコレクション内のドキュメントの合計数を掛けることで取得されるため、avgObjSize が近似値である場合、この数も近似値になります。

  • count — コレクション内のドキュメントの数

ディクショナリベースの圧縮を評価する際、以下の CloudWatch メトリクスが役立ちます。

  • CPUUtilization

  • FreeableMemory

  • VolumeBytesUsed

  • VolumeReadiOps

  • VolumeWriteIOPs

collStats メトリクス:

  • storageSize

  • サイズ

さらに、クエリタイプまたは API あたりのレイテンシーやスループットなど、アプリケーション固有のメトリクスを追跡すると便利です。