DynamoDB vs Cassandra
Amazon DynamoDB と Apache Cassandra は、どちらもキーでデータをパーティション分割して水平方向にスケールする分散 NoSQL データベースであり、Amazon の2007年の Dynamo 論文という共通の祖先を持ちます。しかし両者は運用スペクトラムの両極に位置します。DynamoDB はフルマネージドでサーバーレスな AWS サービスであるのに対し、Cassandra はマスターレスなピアツーピアリングとして自分でデプロイして運用するオープンソースソフトウェアです。
DynamoDB と Cassandra のどちらが正しい選択か?
どちらもキーでパーティション分割する水平スケール可能な NoSQL ストアです。運用するクラスターがなく従量課金の、AWS 上のフルマネージドでサーバーレスなデータベースが欲しいなら DynamoDB を選びましょう。自分のハードウェア上やクラウドをまたいで動作し、クエリごとに調整可能な整合性を持ち、ベンダーロックインのない、オープンソースでセルフマネージドのマスターレスリングが欲しいなら Cassandra を選びましょう。
DynamoDB vs Cassandra の概要
| 特性 | DynamoDB | Apache Cassandra |
|---|---|---|
| データモデル | キーバリューおよびドキュメント。スキーマレスな JSON ライクのアイテム | パーティション分割されたワイドカラムストア。行はパーティションにグループ化される |
| クエリ言語 | 低レベル API 操作に加え、PartiQL(SQL 互換のクエリ言語) | CQL(Cassandra Query Language)、SQL ライクな言語 |
| パーティショニング / キー | パーティション(ハッシュ)キーと、複合プライマリキー向けのオプションのソートキー | プライマリキー = 1つ以上のパーティションキー列と、0個以上のクラスタリング列 |
| セカンダリインデックス | グローバルセカンダリインデックス(GSI)とローカルセカンダリインデックス(LSI) | ローカルセカンダリインデックス(2i)とストレージアタッチドインデックス(SAI)。マテリアライズドビュー |
| 整合性 | デフォルトは結果整合性。リクエストごとに強い整合性のある読み取りも利用可能 | 操作ごとに調整可能(例: ONE、QUORUM、ALL)で、キースペースごとのレプリケーションファクターに対して指定 |
| スケーリング / 運用 | フルマネージドでサーバーレス。AWS がストレージ、スケーリング、パッチ適用、修復を処理 | コモディティハードウェア上に自分でデプロイするセルフマネージドのマスターレスリング(またはマネージドの Cassandra 互換サービス) |
| マルチリージョン | グローバルテーブル — マルチリージョンのアクティブ・アクティブレプリケーション | キースペースごとに構成するマルチデータセンターレプリケーション |
| 料金 / 運用モデル | 従量課金: オンデマンド(リクエスト単位)またはプロビジョンドキャパシティ。運用するインフラなし | 無料のオープンソースソフトウェア(Apache License 2.0)。インフラを自分でプロビジョニングし、運用し、支払う |
| 最適な用途 | 自動的にスケールするゼロ運用の NoSQL を望む AWS 上のチーム | クエリごとの整合性制御を伴う、オープンソースでセルフホストなクラウド非依存のリングを望むチーム |
DynamoDB が適している場合
- 運用オーバーヘッドをゼロにしたい。 DynamoDB はフルマネージドでサーバーレスです。サイズ調整、パッチ適用、修復、リバランスを行うクラスターはありません。AWS がストレージとスケーリングをバックグラウンドで処理します。
- すでに AWS 上にいる。 IAM、Lambda、その他の AWS エコシステムとネイティブに統合され、グローバルテーブルはデータセンターを立ち上げることなくアクティブ・アクティブのマルチリージョンレプリケーションを提供します。
- トラフィックが急増する、または予測できない。 オンデマンドキャパシティはリクエスト単位で課金されるため、アイドルなノードをプロビジョニングして運用する代わりに、使った分だけ支払います。
- マネージドな耐久性とバックアップが欲しい。 ポイントインタイムリカバリ、オンデマンドバックアップ、クロスリージョンレプリケーションは、自分で運用するインフラではなく設定です。
Cassandra が適している場合
- オープンソースでクラウド非依存のデータベースが必要。 Cassandra は Apache ライセンスで、どこでも動作します — オンプレミス、複数のクラウドをまたぐ形、またはハイブリッド — 単一プロバイダーのマネージドサービスへのベンダーロックインはありません。
- きめ細かい、操作ごとの整合性制御が欲しい。 調整可能な整合性により、各読み取りと書き込みがキースペースのレプリケーションファクターに対してレベル(ONE、QUORUM、ALL など)を選択でき、クエリごとにレイテンシーと整合性をトレードオフできます。
- 単一障害点のないマスターレスアーキテクチャが欲しい。 すべてのノードが対等で読み取りと書き込みを処理でき、個々のノードやデータセンター全体がオフラインになってもクラスターは可用性を維持します。
- クラスターを運用する意思がある(またはマネージドプロバイダーに支払う意思がある)— その制御とポータビリティと引き換えに。
DynamoDB を扱う
DynamoDB を選んだら、DynoTable はテーブルを直接扱うためのデスクトップクライアントです。標準の AWS 認証情報チェーンを読み取るため、すでに使用しているのと同じリージョンやテーブルに接続します。データは DynamoDB に留まり、移行するものは何もありません。
素の視覚的なクライアントが参照とスキャンしかできないのに対し、DynoTable は DynamoDB のアクセスパターンのルールの範囲内に留まりながらリレーショナル形状のクエリ — JOIN、GROUP BY、集計 — を表現する SQL Workbench と、自分の AWS Bedrock 認証情報で動作する AI アシスタントを追加します。キー条件、フィルター、更新式を手書きしているなら、無料の DynamoDB Expression Builder が、何もインストールせずに SDK、CLI、PartiQL 向けの正しい構文を生成します。
DynoTable はクローズドソースの商用アプリです。このページは何をするかを説明するもので、どのように作られているかを説明するものではありません。
よくある質問
DynamoDB は Cassandra をベースにしていますか? いいえ。どちらも一方が他方の上に構築されているわけではありません。両者は Amazon の2007年の Dynamo 論文にさかのぼります — Cassandra はその論文の共著者によって Facebook で作られ、Google の Bigtable からも影響を受けています — が、DynamoDB は独立したフルマネージドの AWS サービスであり、Cassandra は独立したオープンソースプロジェクトです。両者が共有するのは設計上の系譜であり、コードではありません。
スケールとコストでは Cassandra と DynamoDB のどちらがよいですか? どちらも非常に大きなワークロードまで水平にスケールします。本当の違いは運用モデルです。DynamoDB のコストは従量課金(オンデマンドリクエストまたはプロビジョンドキャパシティ)で、運用するサーバーがないため、支出を運用から利用へと移します。Cassandra のソフトウェアは無料ですが、インフラ — ノード、ストレージ、そしてリングを運用するチーム — に対して支払い、運用します。そのため総コストは規模と管理方法に大きく依存します。
Cassandra は DynamoDB のように SQL をサポートしますか? どちらも完全なリレーショナル SQL ではなく SQL ライクなアクセスを提供します。Cassandra は SQL ライクな言語 CQL を使い、DynamoDB は低レベル API に加えて SQL 互換のクエリ言語 PartiQL を提供します。どちらもパーティションをまたぐ JOIN をネイティブには提供せず、両者とも単一パーティションのアクセスパターンを中心に設計されています。
関連
- DynamoDB のパーティションキーの仕組み と、 DynamoDB 流にアクセスパターンをモデリングする シングルテーブル設計 を学びましょう。
- DynamoDB 整合性ガイド で読み取りモードを、 オンデマンド vs プロビジョンド で課金を比較しましょう。
- 無料の DynamoDB Expression Builder でクエリをすばやく構築し、 DynoTable をダウンロード してテーブルをネイティブに扱いましょう。
最終検証日 2026-07-12。Apache Cassandra は Apache Software Foundation の商標であり、ここでは識別のみを目的として参照しています。