DynamoDB vs Azure Cosmos DB
DynamoDB と Azure Cosmos DB は、AWS と Azure それぞれのフラッグシップとなるマネージド NoSQL データベースです。どちらもフルマネージドでサーバーレスに動作でき、キーでデータをパーティション分割し、水平方向にスケールします。実用上の最大の違いは、クラウドの整合性、Cosmos DB のマルチモデル API と5つの調整可能な整合性レベル、そして各サービスがスループットをどう課金するかです。
DynamoDB と Cosmos DB のどちらを使うべきか?
AWS 上で、リクエスト従量課金と深い AWS 統合を備えたサーバーレスなキーバリュー・ドキュメントストアが欲しいなら DynamoDB を選びましょう。Azure 上で、マルチモデル API(ドキュメント、Cassandra、Gremlin グラフ、Table)、5つの明示的な整合性レベル、またはターンキーなマルチリージョン書き込みが欲しいなら Azure Cosmos DB を選びましょう。通常は機能よりも先にクラウドの整合性が決め手になります。
DynamoDB vs Cosmos DB の概要
| 特性 | DynamoDB | Azure Cosmos DB |
|---|---|---|
| データモデル | NoSQL キーバリューおよびドキュメント。テーブル内で最大 400 KB のアイテム | マルチモデル。NoSQL 向けのネイティブ API は JSON ドキュメントを格納し、加えて MongoDB、Cassandra、Gremlin(グラフ)、Table 向けのワイヤ互換 API を備える |
| クエリ言語 / API | ネイティブ API(GetItem、Query、Scan)に加え、SQL 互換言語の PartiQL | NoSQL API では JSON に対する SQL ライクなクエリ言語、加えて各互換 API 独自のクエリ言語 |
| パーティショニング / キー | パーティションキーと、複合プライマリキー向けのオプションのソートキー | コンテナーごとのパーティションキー。アイテムは論理パーティションにグループ化される |
| 整合性 | デフォルトは結果整合性。リクエストごとに強い整合性のある読み取りも利用可能 | 5つのレベル — strong、bounded staleness、session、consistent prefix、eventual — をアカウントまたはリクエストのレベルで選択 |
| マルチリージョン書き込み | グローバルテーブルがマルチリージョンのアクティブ・アクティブレプリケーションを提供 | ターンキーなグローバル分散。マルチリージョン書き込みを有効化できる(これにより strong 整合性レベルは使えなくなる) |
| スケーリングモデル | 自動パーティショニング。サーバーレスのオンデマンドまたはプロビジョンドキャパシティ | プロビジョンドスループット(RU/s)、オートスケール、またはサーバーレス。キャパシティは Request Unit で計測 |
| トランザクション | リージョン内で複数アイテムにまたがる ACID トランザクション | 論理パーティション内での ACID トランザクション(例: トランザクショナルバッチ / ストアドプロシージャ) |
| 料金モデル | リクエスト従量課金(オンデマンド)またはプロビジョンド RCU/WCU、加えてストレージ。AWS 限定 | 1秒あたりの Request Unit(プロビジョンド、オートスケール、またはサーバーレス)に加えてストレージ。有効化した全リージョンで課金 |
| 最適なワークロード | 予測可能なキーアクセスを持ち、ゼロ運用のサーバーレス NoSQL を望む AWS ベースのアプリ | マルチモデル API、明示的な整合性調整、またはグローバルなマルチ書き込み分散を望む Azure ベースのアプリ |
DynamoDB が適している場合
- AWS 上にいる。 DynamoDB は IAM、Lambda、Streams、そしてより広い AWS エコシステムとネイティブに統合され、通常なら書く必要のあるグルーコードを不要にします。
- シンプルなリクエスト従量課金の料金が欲しい。 オンデマンドキャパシティは読み取りと書き込みごとに課金され、プロビジョニングするスループットもアイドルコストもありません。
- アクセスパターンが既知でキーベースである。 DynamoDB のパーティション/ソートキーモデルは、クエリを中心にキーを設計すれば一貫した低レイテンシーを実現します — シングルテーブル設計 を参照してください。
- AWS 上でアクティブ・アクティブのマルチリージョンレプリケーションが欲しい。 グローバルテーブルが設定としてそれを提供します。
Cosmos DB が適している場合
- Azure 上にいる。 Cosmos DB は、DynamoDB が AWS と統合するのと同じように、Azure の ID、Functions、周辺プラットフォームと統合します。
- マルチモデル API が必要。 1つのサービスがドキュメント、Cassandra、Gremlin グラフ、Table の各 API を公開し、それらのエコシステムからの移行を容易にできます。
- 明示的で調整可能な整合性が欲しい。 Cosmos DB は strong と eventual の間に、bounded staleness と session を含む5つの名前付き整合性レベルを提供し、アカウントまたはリクエストごとに選択します。
- 標準でマルチリージョン書き込みが必要。 Cosmos DB はターンキーなグローバル分散により複数のリージョンで書き込みを受け付けられます(最も強い整合性レベルと引き換えに)。
DynamoDB を扱う
DynamoDB に落ち着いたら、DynoTable は macOS、Windows、Linux 向けのネイティブなデスクトップクライアントです。標準の AWS 認証情報チェーンを読み取るため、データは DynamoDB に留まり、移行するものは何もありません。アイテムの参照とインライン編集に加えて、SQL Workbench は Query/Scan にコンパイルすることで DynamoDB のアクセスパターンのルールの範囲内でリレーショナル形状のクエリ — 結合、GROUP BY、集計 — を表現し、AI アシスタントは自分の AWS Bedrock 認証情報で動作します。
無料の DynamoDB Expression Builder は、予約語と属性名を正しく処理しながら、キー条件、フィルター、更新の各式を SDK、CLI、PartiQL の形式で生成します。DynoTable はクローズドソースの商用アプリです。このページは何をするかを説明するもので、どのように作られているかを説明するものではありません。
よくある質問
Cosmos DB は DynamoDB と同じですか?
いいえ。両者は Microsoft と AWS の別々の製品です。どちらもキーでパーティション分割する、マネージドでサーバーレス対応の NoSQL データベースですが、Cosmos DB は複数のワイヤ互換 API と5つの整合性レベルを備えたマルチモデルであるのに対し、DynamoDB は AWS ネイティブのキーバリュー・ドキュメントストアで、2段階(結果整合性または強い整合性)の読み取りモデルと PartiQL を備えます。
DynamoDB には Cosmos DB のような整合性レベルがありますか?
DynamoDB は5つの名前付きレベルではなく、2つの読み取りモードを提供します。結果整合性のある読み取り(デフォルト)と、リージョン内でリクエストごとに選択する強い整合性のある読み取りです。Cosmos DB は — strong、bounded staleness、session、consistent prefix、eventual という — スペクトラムを公開し、アカウントまたはリクエストのレベルで構成します。
Cosmos DB から DynamoDB へ移行できますか?
移行できますが、リフト・アンド・シフトではなく、リモデリングを見込んでください。どちらもキーでパーティション分割する NoSQL なので概念は転用できますが、パーティション/ソートキーを再マッピングし、クエリを DynamoDB の API または PartiQL 向けに書き直し、Cosmos DB の Gremlin や Cassandra API の使用は DynamoDB 上では異なるデータモデルを必要とします。アクセスパターンから始めましょう — DynamoDB でのデータモデリング方法 を参照してください。
関連
- DynamoDB の整合性 と、マルチリージョンの グローバルテーブル について学びましょう。
- シングルテーブル設計 と DynamoDB でのデータモデリング方法 でアクセスパターンをモデリングしましょう。
- 無料の DynamoDB Expression Builder で式を構築しましょう。
- DynamoDB テーブルを扱うために DynoTable をダウンロード。
最終検証日 2026-07-12、公式の AWS DynamoDB Developer Guide および Microsoft Azure Cosmos DB のドキュメントに照らして確認しました。Azure Cosmos DB は Microsoft の商標であり、ここでは識別のみを目的として参照しています。