初級読了 2 分

DynamoDBをいつ使うべきか(そしていつ使うべきでないか)

DynamoDBは、それが作られた対象のワークロードには素晴らしいデータベースであり、それ以外 には苛立たしいものです。決め手となる問いは「ウェブスケールか?」ではなく — 「アクセスパターンを前もって把握しているか、そしてそれらはキーベースか?」です。これを 正しく押さえればDynamoDBはどんなスケールでも1桁ミリ秒の読み取りを提供します。誤れば、 結合やアドホッククエリの欠如と永遠に戦うことになります。

DynamoDBはいつ使うべきか?

アクセスパターンが既知でキーベースかつ大量の場合、そして管理するサーバーなしにどんなスケールでも予測可能な1桁ミリ秒のレイテンシが必要な場合は、DynamoDBを使用してください。アドホッククエリ、豊富な結合、またはデータセット全体の分析が必要な場合、あるいはデータが小さくクエリの形が変わり続ける場合は避けてください。

  • DynamoDBを使うのは、アクセスパターンが既知で、キーベースで、大量であり — 管理する サーバーなしにどんなスケールでも予測可能なレイテンシが欲しいとき。
  • 避けるのは、アドホッククエリ、豊富な結合、データセット全体にわたる分析が必要なとき、 またはデータが小さくクエリの形が変わり続けるとき。
  • 核心的なトレードオフ: DynamoDBはクエリのために前もって設計させます。その見返りに、 成長しても決して遅くなりません。
  • これは構文が違うだけのリレーショナルデータベースではありません — そのように モデリングすることが苦痛の最大の原因です。

DynamoDBが有利になるシグナル

DynamoDBは、これらの多くが当てはまるときに輝きます:

  • アクセスパターンを事前に把握している。 アプリが行う正確なクエリ(「idでユーザーを 取得」「ユーザーの注文を新しい順に一覧」)を列挙でき、それらが気まぐれに変わらない。 DynamoDBはそれらのクエリを中心にモデリングされます。
  • アクセスがキーベース。 任意の属性の組み合わせをスキャンするのではなく、既知の パーティションキーでアイテムを参照する。
  • スケールと予測可能なレイテンシが重要。 DynamoDBは、テーブルが千件でも10億件でも 一貫した1桁ミリ秒 のパフォーマンスを発揮します。
  • 運用オーバーヘッドをゼロにしたい。 インスタンスもフェイルオーバーもバキューミングも なし — フルマネージドで、オンデマンドならゼロまでスケールします。
  • 書き込みスループットが高く急増する。 イベントログ、IoTテレメトリ、セッション/カートの 状態、リーダーボード — 明確なキーを持つ追記中心のワークロード。

不利になるシグナル

代わりにリレーショナルデータベース(または検索/分析エンジン)を選ぶのは、次のときです:

  • クエリがアドホック。 アナリストが任意のカラムでデータを切り分けたり、要件が毎週 変わったりする。SQLの柔軟性が勝ちます。DynamoDBはパターンごとに新しいインデックスが 必要になります。
  • データセット全体にわたる本物の結合と集計が必要。 レポーティング、ビジネス インテリジェンス、「地域別・月別の売上合計」 — これはOLAP/リレーショナルの仕事です。
  • データセットが小さくトラフィックが少ない。 静かな管理アプリの数千行は、DynamoDBの スケールから恩恵を受けず、SQLの利便性を失います。
  • アクセスパターンをまだ予測できない。 まだ形を模索している初期段階のプロダクト? 自由に再クエリできるリレーショナルなスキーマのほうが、パターンが固まるまでは寛容です。
いいえ、アドホック / 変化するはいはいいいえはいいいえ、小規模 + 静か新しいワークロードアクセスパターンが既知 +キーベース?リレーショナルDBデータセット横断の結合 /分析が必要?高スケールまたは急増する書き込み?DynamoDB

採用前にコストを見積もる

DynamoDBの料金は、インスタンス時間ではなく、読み取り・書き込み・ストレージに従います — そのため急増するワークロードやサーバーレスのワークロードには安価で、持続的な重いスキャン には高くつくことがあります。採用する前に DynamoDB料金計算ツールで実際の読み書きの構成を モデル化しましょう。技術的に適合して見えるワークロードは、コスト面でも採算が合うべきです。

適合すると判断したら

作業はモデリングへと移ります。DynamoDBは、クエリを中心にテーブルを設計することに 報います — DynamoDBでのデータモデリング方法シングルテーブル設計、そして明示的に シングルテーブルを選ぶべきでないときを参照して ください。

DynoTable でデータが入った DynamoDB テーブルを閲覧しているところ。
DynoTable でデータが入った DynamoDB テーブルを閲覧しているところ。

落とし穴と次のステップ

  • DynamoDBをリレーショナルデータベースのようにモデリングしてはいけない — 読み取り時に 結合する正規化されたテーブルは、DynamoDBが最も厳しく罰するアンチパターンです。
  • 分析のために選んではいけない — レポーティングにはスキャンする代わりに、分析用ストアと 組み合わせる(またはそこへエクスポートする)。
  • アクセスパターンに自信がない? 待ちましょう。 クエリを把握する前にDynamoDBを採用する ことは、それを把握していることを要求する唯一のデータベースを選ぶことです。
  • 関連: QueryとScanが、「キーベースのアクセス」が実際に何を もたらすかを示しています。

アプリを賭ける前にDynamoDBテーブルを探索したいですか? DynoTableをダウンロードして、データに直接接続してください。

更新日