

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

# Amazon DocumentDB 8.0 でのディクショナリベースの圧縮の管理
<a name="dict-compression"></a>

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 ではサポートされていません。

## パフォーマンスに関する考慮事項
<a name="perf-considerations"></a>

Zstd 圧縮には、次のトレードオフが含まれます。
+ ストレージと CPU: Zstd 圧縮では圧縮率が向上しますが、LZ4 圧縮と比較して CPU リソースがわずかに多く使用される場合があります。
+ 初期圧縮: 新しいコレクションは、効果的なディクショナリをトレーニングするために十分なドキュメントが挿入されるまで、最適な圧縮を達成できない場合があります。現在、コレクションが少なくとも 100 のドキュメントの場合、ディクショナリはトレーニングされます。
+ ワークロードタイプ: データ全体がバッファキャッシュに収まる読み込み負荷の高いワークロードでは、解凍オーバーヘッドによりレイテンシーと CPU 使用率が増加する可能性があります。

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

## ディクショナリベースの圧縮の有効化
<a name="enabling-zstd"></a>

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

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

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

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

クラスター上のすべてのコレクションで Zstd アルゴリズムを有効にするには、クラスターパラメータグループを変更して、パラメータ「default\$1collection\$1compression」の値として「zstd」を選択できます。

## 開始方法
<a name="getting-started"></a>

Amazon DocumentDB 8.0 では、Zstd 圧縮がデフォルトでオンになっています。クラスターパラメータグループで「default\$1compression」の値を無効にすると、いつでもオフにできます。Amazon DocumentDB 8.0 以降、「enabled」は default\$1compression の有効な選択肢ではなくなり、Zstd と LZ4 から選択する必要があります。

## モニタリング
<a name="monitoring"></a>

次のいずれかのコマンドを使用して、コレクションの圧縮情報を表示できます。
+ db.runCommand(\$1 collStats: "myCollection" \$1) または
+ 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 あたりのレイテンシーやスループットなど、アプリケーション固有のメトリクスを追跡すると便利です。