DynamoDB は NoSQL データベースですか?

はい。DynamoDB は NoSQL データベースです。非リレーショナルでフルマネージドな、キーバリューかつドキュメントのストアです。固定スキーマのテーブルにある行ではなくスキーマレスなアイテムを保持し、SQL の結合やアドホッククエリと引き換えに、予測可能な一桁ミリ秒の性能と、事実上あらゆるサイズへの水平スケーリングを手にします。

どんな種類の NoSQL か

DynamoDB はキーバリューとドキュメントの両方のデータモデルに対応しています。すべてのアイテムはプライマリキーで指し示され、属性はマップやリストとして最大 32 階層までネストできます。これがモデルのドキュメント側です。

SQL との違い

  • 固定スキーマがない — 事前に定義するのはプライマリキーだけで、他の属性はアイテムごとに変わります。
  • 結合がない — 代わりに非正規化し、アクセスパターンを中心にモデル化します。
  • 予測可能な性能 — 読み取りはパーティションキーを狙うので、データが増えてもレイテンシは横ばいです。

エンジンは JOIN をどう扱うか

PartiQL は DynamoDB を SQL のような見た目にするので、境界は見落としやすくなります。AWS が文書化した SELECT の構文がその文法のすべてであり、そこに JOIN 句はありません。

SELECT {{expression}}  [, ...]
FROM {{table}}[.{{index}}]
[ WHERE {{condition}} ] [ [ORDER BY {{key}} [DESC|ASC] , ...]

それでも送ってみると、パーサーは 2 つ目のテーブルで止まります。

await client.send(
  new ExecuteStatementCommand({
    Statement: `SELECT o.pk FROM "orders" o JOIN "customers" c ON o.pk = c.pk`
  })
);

実際の出力:

ValidationException: Only select from a single table or index is supported.
HTTP 400

拒否はパース時、データが 1 バイトも読まれる前に起きます。だからインデックスをいくら設計しても結合には辿り着けません。NoSQL ストアにおいて、結合はアプリケーションの仕事です。

これは、どのクライアントが何を正直に提供できるかの境界でもあります。DynoTable の SQL Workbench は INNER JOINLEFT JOINGROUP BY、そして COUNT/SUM/AVG/MIN/MAX を受け付けます。

これらをネイティブな QueryScan の呼び出しにコンパイルし、結合と集計は手元のマシンで行います。DynamoDB が見るのは、あくまで単一テーブルの読み取りだけです。

向く場面

DynamoDB は OLTP ワークロードのために作られています。大量で、既知のポイント読み取り・範囲読み取りと書き込みです。重い分析は、エクスポートで供給される別のカラムナストアに任せるべきです。

本番で今も効いてくる NoSQL の制限

「NoSQL」はアクセスモデルを表す言葉であって、制約がなくなるという意味ではありません。DynamoDB には今も、アイテムあたり 400 KBTransactWriteItems あたり 25 アクション、1 トランザクションあたり読み取りまたは書き込み 100 アクションという上限があります。ネストした文書は 32 段 まで深くできます。GSI は名前を挙げた属性しか射影しません。頼れる隠れたスキーマは存在しません。

こうした制限が効いてくるのは、クエリ時に結合で切り抜けることができないからです。スパースインデックス、非正規化した属性、シングルテーブルのキー設計といった形で、あらかじめ制限を織り込んでモデリングし、そのうえでパーティション単位に読みます。クエリビルダーは、フィルターを DynamoDB が実際に実行する Query または Scan リクエストに変換します。

DynoTable では: リレーショナルな問いが正当な場面では、SQL Workbench が JOINGROUP BY をあなたのマシン上でネイティブの QueryScan にコンパイルします — DynamoDB 側から見えるのは、あくまでシングルテーブルの読み取りです。対応している文法と正直な限界については SQL Workbench を参照してください。

さらに詳しく

DynamoDB を使うべき場面と、DynamoDB でのデータモデリング方法でのデータの形の作り方を参照してください。NoSQL のテーブルを参照し、DynamoDB のアクセスパターンのルール内で SQL を実行するには、DynoTable をダウンロードしてください。

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。PartiQL の SELECT 文法は 2026-07-28 に再確認しました。

2026-07-28 に、Node v24.18.0 上の @aws-sdk/client-dynamodb 3.1095.0 で DynamoDB Local 3.3.0 に対して再現しました。上記の ValidationException はエンジンの出力そのままです。

Console なしで DynamoDB を扱う

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

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