Amazon Web Services ブログ

新年の抱負 : Amazon DynamoDB のベストプラクティスを守る

Amazon DynamoDB のベストプラクティスを守ることを新年の抱負としてみてはいかがでしょうか。これらのベストプラクティスに従うことで、DynamoDB を使用する際のパフォーマンスを最大限に発揮し、最小限に抑えることができます。以下のリンクをクリックして、DynamoDB ドキュメントで各ベストプラクティスの詳細をご覧ください。

  1. パーティションキーを効率的に設計して使用する
    DynamoDB テーブルにある各アイテムを固有に識別するプライマリーキーは、シンプルなキー (パーティションキーのみ) または複合キー (ソートキーと組み合わされたパーティションキー) にすることができます。アプリケーションは、テーブルとそのセカンダリインデックスの論理パーティションキー全体で統一されたアクティビティのために設計してください。バーストキャパシティーアダプティブキャパシティー、および書き込みシャーディングといった追加のメリットが得られます。
  1. ソートキーを使用してデータを編成する
    適切に設計されたソートキーは、関連する情報を一か所に集め、それを効率的にクエリすることができます。複合ソートキーは、データで階層 (1 対多) リレーションシップを定義することを可能にし、任意の階層レベルでクエリすることができます。バージョン管理の目的でソートキーを使用することもできます。
  1. セカンダリインデックスを効率的に使用する
    多くの場合、セカンダリインデックスはアプリケーションが必要とするクエリパターンをサポートするために必須です。その一方、非効率的なセカンダリインデックスの使用は不必要にコストを増加させ、パフォーマンスを低下させます。スパースインデックスの使用方法、マテリアライズされた集計クエリのグローバルセカンダリインデックスの使用方法、および結果整合性のあるレプリカの作成方法を学習します。
  1. 大型のアイテムと属性を保存する方法を理解する
    DynamoDB では現在、テーブルに保存する各アイテムのサイズが制限されています。アプリケーションが、サイズ制限を超過したデータをアイテムに保存する必要がある場合、大きな属性を 1 つ以上圧縮したり、アイテムを複数のアイテムに分割したり (ソートキーによる効率的なインデックス化) することができます。また、アイテムをオブジェクトとして Amazon S3 に保存して、Amazon S3 オブジェクト識別子を DynamoDB アイテムに保存したりすることもできます。
  1. 期間ごとに 1 アプリケーションあたり 1 つのテーブルを使って時系列データに対応する
    DynamoDB における一般的な設計原則では、使用するテーブルの数を最小限にとどめることが推奨されています。ほとんどのアプリケーションには、単一のテーブルしか必要ありません。しかし、時系列データについては、期間ごとに 1 アプリケーションあたり 1 つのテーブルを使うことができます。
  1. 多対多リレーションシップを管理する
    隣接リストは、DynamoDB における多対多リレーションシップのモデル化に有用な設計パターンの一部です。より一般的には、DynamoDB でグラフデータ (ノードとエッジ) を表現する方法を提供します。
  1. ハイブリッドデータベースシステムを実装する
    状況によっては、1 つ以上のリレーショナルデータベース管理システムから DynamoDB への移行が適切ではない場合があります。この場合は、ハイブリッドシステムの作成が望ましいかもしれません。
  1. DynamoDB でリレーショナルデータをモデル化する
    ビジネスにおいて高トラフィッククエリに対する低レイテンシー応答が必要となる場合は、一般的に NoSQL システムの活用が技術的および経済的な面で理にかないます。DynamoDB は、リレーショナルシステムの拡張性を制限する問題を回避することによって、それらの問題の解決を助けます。
  1. 効率的にデータをクエリしてスキャンする
    いつスキャンしていつクエリするのか、および並列スキャンを活用する方法についてのヒントに従ってください。
  1. グローバルテーブルを使用して AWS リージョン間でテーブルデータをレプリケートする
    DynamoDB のグローバルテーブルは、マルチリージョンのマルチマスターデータベースをデプロイするための完全マネージド型ソリューションを提供します。独自のレプリケーションソリューションを構築して維持する必要はありません。グローバルテーブルを作成するときには、テーブルを使用できるようにしたい複数の AWS リージョンを指定します。DynamoDB は、これらのリージョンに同一のテーブルを作成して、進行中のデータ変更をそれらすべてに伝播するために必要なすべてのタスクを実行します。
  1. AWS re:Invent 2019 での Rick Houlihan によるセッション「Amazon DynamoDB Advanced Design Pattern」を視聴する
    多くの内容が詰まっているので、理解して自分のものにするには 5 回ほど見る必要があるかもしれませんが、多くの人は「このセッションを見て DynamoDB の理解と使用方法が変わった」と言います。このセッションは、毎年最も注目されている DynamoDB 関連のセッションなので、特におすすめします。

 

今年は、最高のパフォーマンスと最小のコストのためにも DynamoDB のベストプラクティスを守りましょう。 DynamoDB のベストプラクティスに関するご質問またはフィードバックについては、Twitter アカウント @DynamoDB までご連絡ください。

 


著者について

Craig Liebendorfer

Craig Liebendorfer は、アマゾン ウェブ サービスのシニアテクニカルエディターです。彼は @DynamoDB の Twitter アカウントの運営者でもあります。