

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

# コレクションレベルのドキュメント圧縮の管理
<a name="doc-compression"></a>

Amazon DocumentDB 5.0 コレクションレベルのドキュメント圧縮では、コレクション内のドキュメントを圧縮することで、ストレージと IO のコストを削減できます。コレクションレベルでのドキュメント圧縮を有効にし、圧縮ドキュメントのストレージサイズや圧縮ステータスなどの圧縮メトリクスに基づいて得られたストレージを測定することで、必要に応じて圧縮メトリクスを確認できます。Amazon DocumentDB 5.0 は、LZ4 圧縮アルゴリズムを使用してドキュメントを圧縮します。

Amazon DocumentDB は、バージョン 5.0 以降でドキュメント圧縮をサポートしています。以下は、コレクションレベルのドキュメント圧縮機能です。
+ **デフォルトの動作** — 5.0 クラスターの新しいコレクションのデフォルトの圧縮設定は、クラスターパラメータ によって決まります`default_collection_compression`。このパラメータは、デフォルトでは「無効」に設定されています。
+ **既存のコレクションの圧縮** — 既存のコレクションの圧縮設定は、`collMod` コマンドを使用して変更できます。
+ **圧縮しきい値の変更** — デフォルトの圧縮しきい値は 2KB です。`createCollection` コマンドを使用して新しいコレクション向けに圧縮しきい値を指定したり、`collMod` コマンドを使用して既存のコレクション向けに値を変更することができます。

**注記**  
Amazon DocumentDB ドキュメント圧縮は Amazon DocumentDB バージョン 3.6 および 4.0 ではサポートされていません。

**Topics**
+ [ドキュメント圧縮の管理](#manage-compression)
+ [ドキュメント圧縮のモニタリング](#monitoring-compression)

## ドキュメント圧縮の管理
<a name="manage-compression"></a>

### コレクション内でのドキュメント圧縮の有効化
<a name="enabling-collection-compression"></a>

`db.createCollection()` メソッドを使用して Amazon DocumentDB 5.0 でコレクションを作成するときにドキュメント圧縮を有効にします。

```
db.createCollection( sample_collection,{
    storageEngine : {
        documentDB: {
            compression:{enable: <true | false>}
        }
    }
})
```

### クラスター内でのドキュメント圧縮の有効化
<a name="enabling-cluster-compression"></a>

クラスターパラメータ `default_collection_compression` を「有効」に設定することで、クラスターレベルのすべての新しいコレクションでドキュメント圧縮をデフォルトで有効にできます。このパラメータを「有効」に設定すると、クラスターで新しく作成されるコレクションではデフォルトで圧縮が有効になり、圧縮しきい値は 2 KB になります。

### 既存のコレクションの圧縮
<a name="compress-existing-collections"></a>

`collMod` オペレーションの使用により、以下の `storageEngine` 設定を指定して既存のコレクションの圧縮設定を変更することもできます。なお、このコマンドを使用して行われる変更は、新たに挿入/更新されるドキュメントにのみ適用され、過去に挿入されたドキュメントに対する圧縮は変更されないことに注意してください。

```
db.runCommand({ 
    collMod: "orders", 
    storageEngine: { 
        documentDB: {compression: {enable: <true | false>} }
    }
})
```

### 圧縮しきい値の設定
<a name="set-compression-threshold"></a>

デフォルトでは、圧縮されたコレクションの圧縮しきい値は 2032 バイトです。このしきい値は、圧縮を有効にして新しいコレクションを作成するときに `createCollection` コマンドで設定できます。

```
db.createCollection( sample_collection, {
    storageEngine : {
        documentDB: {
            compression: {
                enable: true,
                threshold: <128 - 8000>
            }
        }
    }
})
```

`collMod` オペレーションの使用により、次の `storageEngine` 設定を指定して既存の圧縮コレクションの圧縮しきい値を変更することもできます。

```
db.runCommand({ 
    collMod: "orders", 
    storageEngine: { 
        documentDB: {
            compression: {
                enable: true,
                threshold: <128 - 8000>
            }
        }
    }
})
```

圧縮しきい値は 128～8000 バイトの範囲でのみ設定できることに留意してください。さらに、圧縮しきい値を指定するときは、`enable` オプションを「true」に設定する必要があります。

## ドキュメント圧縮のモニタリング
<a name="monitoring-compression"></a>

コレクションが圧縮されているかどうかを確認し、圧縮率を求める方法は次の通りです。

mongo シェルから `db.printCollectionStats()` または `db.collection.stats()` コマンドを実行して圧縮統計を表示します。出力に元のサイズと圧縮サイズが表示されるため、両者を比較してドキュメント圧縮によって得られたストレージを分析できます。この例では、「sample\$1collection」という名前のコレクションの統計が下に表示されます。以下のように、スケーリング係数 1024\$11024 を使用して、`size` と `storageSize` の値を MB 単位で出力します。

```
db.sample_collection.stats(1024*1024)
```

上記のコマンドを使った出力例を以下にご紹介します。

```
{
    "ns" : "test.sample_collection",
    "count" : 1000000,
    "size" : 3906.3,
    "avgObjSize" : 4096,
    "storageSize" : 1953.1, 
    compression:{"enabled" : true,"threshold" : 2032},
    ...
}
```
+ **size**: ドキュメントコレクションの元のサイズ。
+ **avgObjSize**: 圧縮前のドキュメントサイズ平均 (小数第一位まで四捨五入)。測定単位はバイト。
+ **storageSize**: 圧縮後のコレクションのストレージサイズ。測定単位はバイト。
+ **enabled**: 圧縮の有効/無効を示します。

実際の圧縮率を計算するには、コレクションサイズをストレージサイズで割ります (size/storageSize)。上記の例の場合、計算は 3906.3/1953.1 で、これは 2:1 の圧縮率に相当します。