DynamoDB を使うべきでないのはどんなときですか?

ワークロードが分析系であるか、アクセスパターンが未知のときは DynamoDB を避けてください。DynamoDB は、既知のキーベースのアクセスパターンを持つ運用系(OLTP)ワークロードのために作られています。結合も集計関数もなく、アドホックなクエリはコストの高いテーブル全件スキャンに落ちます。OLAP のレポーティングや、進化していくリレーショナルな要件には、別のエンジンを選んでください。

相性の悪い用途

  • アドホックな分析とレポーティングOLAP)— GROUP BYSUMAVG はありません。すべてのロールアップはスキャンか、自分で維持する事前計算済みの集計です。回避策は集計ガイドを参照してください。
  • 正規化されたリレーショナルスキーマ — DynamoDB は意図的に JOIN 演算子を省いており、AWS 自身の指針は非正規化することです。モデルが読み取り時に本当に多方向の結合を必要とするなら、リレーショナルエンジンのほうが合います。
  • 未知の、あるいは急速に変わるアクセスパターン — キーはクエリを中心に設計します。クエリをまだ名指しできないなら、新しいクエリのたびにテーブルの再設計かフルスキャンのリスクを負います。
  • 全文検索とリッチなクエリDynamoDB は全文検索に対応しているか?を参照してください。検索は検索インデックスの仕事です。
  • 大きなオブジェクト — アイテムは 400 KB で頭打ちです。メディアやドキュメントは S3 に置き、テーブルにはポインターを持たせます。

拒否され、そして値段を付けられるロールアップ

分析との相性の悪さは好みの問題ではありません。PartiQL でグループ化した件数を求めると、文は何かを読む前に拒否されます。

SELECT status, COUNT(*) FROM "orders" GROUP BY status
ValidationException: Unsupported clause: GROUP BY
HTTP 400

グループ化を外して単純な合計を求めると、もう 1 段階手前のパーサーで失敗します。

SELECT COUNT(*) FROM "orders"
ValidationException: Unexpected path component at 1:8:5
HTTP 400

この方言に COUNT という関数はそもそもないので、パーサーはそれを属性パスとして読み、括弧のところで諦めます。

そうすると残るのは自分で書く Scan で、これには値段が付きます。50 GB のテーブルを端から端まで読むと 6,553,600 の結果整合性の読み取りユニットがかかります。これはスキャンした合計サイズを 4 KB 単位にしたものを半分にした値です。us-east-1 のオンデマンドでは $0.82 です。

その 1 つの数字を毎時更新すると、月 $598 になります。書き込みのたびにカウンターを維持するか、分析用ストアにエクスポートするほうが安い答えであり、そのどちらも DynamoDB があなたの代わりにやってくれない仕事です。

真価を発揮する場面

その裏返しのリストが、そのまま DynamoDB の得意分野です。予測可能なキーベースの読み書きを持ち、どんな規模でも 1 桁ミリ秒を保たなければならない大量の運用系ワークロード — カート、セッション、プロフィール、ゲームの状態、IoT イベントなどです。DynamoDB を使うべき場面のガイドが、その肯定側を扱っています。

さらに詳しく

迷っているなら、次は DynamoDB を使うべきときを読んでください。すでに DynamoDB を使っていて SQL が恋しいなら、DynoTable がライブのテーブルに対して JOIN と GROUP BY をデスクトップから実行します。そして料金計算ツールは、決める前にそのワークロードがいくらになるかを教えてくれます。

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。400 KB の数字は 2026-07-28 に再確認しています。AWS はこれをサービスクォータのページから Constraints.html に移しました。

2026-07-28 に、Node v24.18.0 上の @aws-sdk/client-dynamodb 3.1095.0 経由で DynamoDB Local 3.3.0 に対して再現しました。2 つの ValidationException メッセージはどちらも逐語です。Scan のコストは同期済みの AWS 料金テーブルにある us-east-1 の料率から算出しています。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。