Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

大きな項目と属性を格納するベストプラクティス

Amazon DynamoDB では現在、テーブルに格納する各項目のサイズを制限しています (DynamoDB での制限を参照)。アプリケーションで DynamoDB のサイズ制限よりも多くのデータを格納する必要がある場合は、1 つ以上の大きな属性を圧縮するか、Amazon Simple Storage Service (Amazon S3) にオブジェクトとして格納して Amazon S3 オブジェクト識別子を DynamoDB 項目に格納することができます。

大量の属性値を圧縮する

大きな属性値を圧縮すると、DynamoDB の項目制限に収まり、ストレージコストが削減されます。GZIP や LZO などの圧縮アルゴリズムはバイナリ出力を生成し、これを Binary 属性タイプに格納することができます。

たとえば、「テーブルの作成とサンプルデータのロード」セクションの Reply テーブルに、フォーラムユーザーの書いたメッセージが格納されます。これらのユーザー応答は、長い文字列で構成される場合があるため、圧縮の立派な候補になります。

DynamoDB で長いメッセージを圧縮する方法を示すコード例については、次の場所を参照してください。

大きな属性値を Amazon S3 に保存する

上記のように、Amazon Simple Storage Service (Amazon S3) を利用して、DynamoDB 項目に収まらない大きな属性値を格納することもできます。Amazon S3 のオブジェクトとして保存してから、DynamoDB 項目にオブジェクト識別子を格納することができます。

また、Amazon S3 のオブジェクトメタデータサポートを使用して、DynamoDB の親項目にリンクを戻すこともできます。項目の主キー値を Amazon S3 のオブジェクトの Amazon S3 メタデータとして格納します。この操作は、Amazon S3 オブジェクトのメンテナンスに役立ちます。

たとえば、ProductCatalog テーブル(「テーブルの作成とサンプルデータのロード」セクション参照)を検討してください。このテーブル内の項目には、項目の価格、説明、書籍の著者、その他の製品の寸法に関する情報を格納します。大きすぎて項目に収まらない各製品のイメージを保存する場合は、DynamoDB ではなく、Amazon S3 にイメージを保存できます。

この戦略を実装するときは、次の制限事項に注意してください。

  • DynamoDB は、Amazon S3 と DynamoDB の間のトランザクションをサポートしていません。このため、アプリケーションでは失敗が発生する状況に対処する必要があります。たとえば、孤立した Amazon S3 オブジェクトのクリーンアップなどがあります。

  • Amazon S3 では、オブジェクト ID の長さが制限されます。そのため、過度に長いオブジェクト識別子を生成したり、他の Amazon S3 制約に違反しないようにデータを整理する必要があります。

Amazon S3 の使用方法の詳細については、「Amazon Simple Storage Service 開発者ガイド」を参照してください。

このページの内容: