DynamoDB vs Amazon DocumentDB
どちらも AWS のフルマネージド NoSQL データベースですが、解決する課題は異なります。DynamoDB はサーバーレスなキーバリューかつドキュメントストアであり、Amazon DocumentDB は MongoDB 互換のドキュメントデータベースです。このページでは、データモデルを決めてしまう前に適切な方を選べるよう、両者を事実に基づいて比較します。
DynamoDB と DocumentDB の違いは何ですか?
DynamoDB は、管理すべきサーバーやクラスターが存在しないサーバーレスなキーバリューかつドキュメントデータベースで、リクエスト量またはプロビジョンドキャパシティに応じてスケールします。Amazon DocumentDB は MongoDB 互換のドキュメントデータベースで、インスタンスのクラスター(プライマリと読み取りレプリカ)上で動作します。DynamoDB は独自の API を使用します。DocumentDB は MongoDB API を話すため、既存の MongoDB アプリ、ドライバー、ツールがそのまま動作します。
DynamoDB と Amazon DocumentDB の概要
| 特性 | DynamoDB | Amazon DocumentDB |
|---|---|---|
| データモデル | キーバリューとドキュメント(型付き属性を持つアイテム) | ドキュメント(コレクション内の JSON/BSON ドキュメント) |
| クエリ API | DynamoDB API(GetItem、Query、Scan、PutItem、UpdateItem)と PartiQL | MongoDB API — MongoDB で使うのと同じドライバー、ツール、mongo/mongosh シェル |
| 最大レコードサイズ | 1 アイテムあたり 400 KB | 1 ドキュメントあたり 16 MB(BSON、MongoDB のドキュメント上限) |
| インデックス | グローバルセカンダリインデックス(GSI)とローカルセカンダリインデックス(LSI) | 複合インデックスを含む MongoDB スタイルのセカンダリインデックス |
| 整合性 | デフォルトは結果整合性、任意で強い整合性のある読み取り、ACID トランザクション | プライマリからの読み取りは強い整合性、レプリカからの読み取りは結果整合性になり得る(読み取り設定)、ACID トランザクション |
| スケーリング / プロビジョニング | サーバーレス — インスタンスもクラスターも不要、オンデマンドまたはプロビジョンドキャパシティ | インスタンスベースのクラスター(プライマリと最大 15 のレプリカ)またはエラスティッククラスター、サーバーレスインスタンスクラスも利用可能 |
| 料金モデル | リクエスト課金(オンデマンド)またはプロビジョンドの読み取り/書き込みキャパシティ、加えてストレージ | インスタンス時間あたりのコンピュート、加えて I/O リクエスト、ストレージ、バックアップストレージ |
| 最適な用途 | アクセスパターンが判明している大規模なキーバリューおよびサーバーレスワークロード | 既存の MongoDB ワークロードや、AWS 上で MongoDB API を必要とするドキュメントアプリ |
サイズは各サービス自身のドキュメントに従っています。DynamoDB はサイズをバイナリ単位(1 KB = 1024 バイト)で測定します。DocumentDB の 16 MB という数値は、標準的な MongoDB BSON ドキュメントの上限です。
DynamoDB が適している場合
- 管理するインフラをゼロにしたい場合。 DynamoDB には、サイジング、パッチ適用、フェイルオーバーが必要なインスタンス、クラスター、レプリカがありません — テーブルを作成して読み書きするだけです。キャパシティはオンデマンド(リクエスト課金)またはプロビジョンドのいずれかです。
- ワークロードがキーバリュー、あるいはアクセスパターンが判明しているシングルテーブルの場合。 DynamoDB はクエリを前もって設計しておくことに報いる設計です。DynamoDB でのデータモデリング方法とシングルテーブル設計を参照してください。
- 非常に大規模でも予測可能なパフォーマンスが必要な場合。 DynamoDB は、トラフィックが増えても一定に保たれる 1桁ミリ秒の読み書きを実現します。
- AWS 上でサーバーレスを構築している場合。 DynamoDB は Lambda やリクエスト課金と自然に組み合わさり、アイドル状態のインスタンスコストが発生しません。
DocumentDB が適している場合
- すでに MongoDB を運用している場合。 DocumentDB は MongoDB API 互換であるため、既存のドライバー、ツール、アプリケーションコードが最小限の変更で接続できることが多く、AWS へのリフト・アンド・シフトに役立ちます。
- 大きなドキュメントや、リッチでアドホックなクエリが必要な場合。 DocumentDB の 16 MB のドキュメント上限は DynamoDB の 400 KB アイテムよりはるかに大きく、MongoDB のクエリ言語はすべてのアクセスパターンを事前に設計しなくても柔軟なフィルタリングと集計をサポートします。
- 馴染みのある API でドキュメントファーストのモデルを好む場合。 チームがパーティション/ソートキーではなく MongoDB のコレクションとドキュメントで考えるなら、DocumentDB はそのメンタルモデルを維持できます。
どちらかが厳密に「優れている」わけではありません。DynamoDB はクエリの柔軟性を手放して手のかからないサーバーレスなスケールを取り、DocumentDB はサーバーレスのシンプルさを手放して MongoDB 互換性と、より大きく柔軟なドキュメントを取ります。
DynamoDB を扱う
DynamoDB を選んだら、DynoTableは、AWS コンソールを使わずにテーブルの参照、編集、クエリを行えるデスクトップの DynamoDB クライアントです。標準的な AWS 認証情報を読み取るため、データはあなたのアカウントと DynamoDB の中にとどまります。
DynamoDB は SQL や MongoDB のクエリ言語ではなく独自の式構文を持つため、無料の DynamoDB Expression Builder は、正しいキー条件、フィルター式、更新式を構築し、それらを SDK コードにそのままコピーするのに役立ちます。移行前にコストを確認するには、DynamoDB 料金計算ツールがオンデマンドおよびプロビジョンドキャパシティの費用を見積もります。
よくある質問
DocumentDB は DynamoDB と同じものですか? いいえ。両者は別個の AWS データベースサービスです。DynamoDB は独自の API を持つサーバーレスなキーバリューかつドキュメントストアであり、Amazon DocumentDB はインスタンスのクラスター上で動作する MongoDB 互換のドキュメントデータベースです。両者はクエリ API を共有しておらず、プロビジョニング、スケーリング、料金の方法も異なります。
DynamoDB と DocumentDB のどちらが安いですか? ワークロードによって異なるため、普遍的な答えはありません。DynamoDB はリクエスト単位(オンデマンド)またはプロビジョンドキャパシティ単位に加えてストレージで課金され、アイドル状態のインスタンスコストがないため、スパイクの多いトラフィックやベースラインの低いトラフィックでは安くなることが多いです。DocumentDB はインスタンス時間に加えて I/O、ストレージ、バックアップで課金され、適切にサイジングされたインスタンス上で安定した高スループットのワークロードにはより費用対効果が高くなり得ます。
DynamoDB は MongoDB API をサポートしていますか?
いいえ。DynamoDB は独自の API(GetItem、Query、Scan、PutItem、UpdateItem)を使用し、SQL 互換のクエリ言語である PartiQL もサポートします。MongoDB API 互換を提供するのは Amazon DocumentDB という AWS サービスです。
関連
- テーブルをモデリングする前に、DynamoDB のデータ型とシングルテーブル設計を学びましょう。
- オンデマンドとプロビジョンドでキャパシティモードを比較しましょう。
- 無料の DynamoDB Expression Builder で素早くクエリを構築し、DynoTable をダウンロードしてテーブルを操作しましょう。
最終確認日 2026-07-12、AWS DynamoDB および Amazon DocumentDB のデベロッパーガイドに照らして確認済み。Amazon DocumentDB および MongoDB はそれぞれの所有者の商標であり、ここでは識別目的でのみ参照しています。