コレクションレベルのドキュメント圧縮の管理 - Amazon DocumentDB

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

コレクションレベルのドキュメント圧縮の管理

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

Amazon DocumentDB は、バージョン 5.0 以降でドキュメント圧縮をサポートしています。以下は、コレクションレベルのドキュメント圧縮機能です。

  • デフォルトの動作 — クラスター上の新しいコレクションのデフォルトの圧縮設定は、クラスターパラメータ default_collection_compression によって決まります。このパラメータは、デフォルトでは「無効」に設定されています。

  • 既存のコレクションの圧縮 — 既存のコレクションの圧縮設定は、collMod コマンドを使用して変更できます。

  • 圧縮しきい値の変更 — デフォルトの圧縮しきい値は 2KB です。createCollection コマンドを使用して新しいコレクション向けに圧縮しきい値を指定したり、collMod コマンドを使用して既存のコレクション向けに値を変更することができます。

注記

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

ドキュメント圧縮の管理

コレクション内でのドキュメント圧縮の有効化

Amazon DocumentDB でコレクションを作成する際に、db.createCollection() の方法でドキュメント圧縮を有効にすることができます。

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

クラスター内でのドキュメント圧縮の有効化

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

既存のコレクションの圧縮

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

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

圧縮しきい値の設定

デフォルトでは、圧縮されたコレクションの圧縮しきい値は 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」に設定する必要があります。

ドキュメント圧縮のモニタリング

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

mongo シェルから db.printCollectionStats() または db.collection.stats() コマンドを実行して圧縮統計を表示します。出力に元のサイズと圧縮サイズが表示されるため、両者を比較してドキュメント圧縮によって得られたストレージを分析できます。この例では、「sample_collection」という名前のコレクションの統計が下に表示されます。以下のように、スケーリング係数 1024*1024 を使用して、sizestorageSize の値を 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 の圧縮率に相当します。