DynamoDB・Cosmos DB・Firestore だいなもでぃーびー・こすもすでぃーびー・ふぁいあすとあ
DynamoDBCosmos DBFirestoreNoSQLマネージドNoSQLサーバーレス
DynamoDB・Cosmos DB・Firestoreについて教えて
DynamoDB・Cosmos DB・Firestoreとは
これら3つはそれぞれAWS・Azure・Google Cloudが提供するフルマネージドNoSQLデータベースサービスです。共通する特徴は「インフラ管理不要」「自動スケーリング」「グローバル分散」の3点です。
Amazon DynamoDBは2012年にリリースされたキーバリュー型+ドキュメント型のDBです。1桁ミリ秒の応答時間を保証し、Amazon自身の「Prime Day」のような極端な負荷にも対応できるほどのスケーラビリティを持ちます。
Azure Cosmos DBはMicrosoftが提供する多モデル対応のDBです。SQLライクなAPIに加え、MongoDB・Cassandra・Gremlin(グラフ)・Table互換のAPIを持ち、既存アプリの移行がしやすいのが特徴です。世界30以上のリージョンにまたがるグローバル分散に対応しています。
Google Firestoreはモバイル・Webアプリ向けのドキュメント型DBです。リアルタイム同期(クライアントがデータ変更を即座に受信)とオフライン対応が強みで、Firebase SDKとの親和性が高く、モバイルアプリ開発で広く使われています。
3サービスの比較
| 項目 | DynamoDB | Cosmos DB | Firestore |
|---|---|---|---|
| クラウド | AWS | Azure | Google Cloud |
| データモデル | キーバリュー/ドキュメント | 多モデル | ドキュメント |
| レイテンシ | 1桁ms保証 | 99パーセンタイル10ms以下 | 通常数十ms |
| グローバル分散 | Global Tables | マルチリージョン書き込み | マルチリージョン(単一書き込み) |
| リアルタイム同期 | DynamoDB Streams | Change Feed | ネイティブ対応 |
| 課金モデル | RCU/WCU or オンデマンド | RU/s or サーバーレス | ドキュメント操作数 |
| 向いている用途 | 大規模Webバックエンド | 既存NoSQL移行 | モバイル/Webアプリ |
DynamoDBの主要概念
- パーティションキー — データを分散させるための主キー
- ソートキー — 同一パーティション内の並び順を決める
- RCU(Read Capacity Unit) — 読み取りスループットの単位
- WCU(Write Capacity Unit) — 書き込みスループットの単位
- GSI(Global Secondary Index) — 別のキーでのインデックス検索
歴史と背景
- 2007年 — Amazon Dynamo論文発表(DynamoDBの原型)
- 2012年 — Amazon DynamoDB正式リリース
- 2015年 — Azure DocumentDB(後のCosmos DB)リリース
- 2017年 — Azure Cosmos DBに改名、多モデル対応へ
- 2017年 — Google FirestoreがFirebase Realtime Databaseの後継としてリリース
- 2018年 — Firestore GA。GCPとFirebase双方からアクセス可能に
課金モデルの違い
関連する規格・RFC
| 資料 | 内容 |
|---|---|
| Amazon Dynamo論文 (2007) | DynamoDB設計の原典 |
| Google F1論文 (2012) | Firestoreの基盤技術の源流 |
関連用語
- NoSQL — DynamoDB・Cosmos DB・Firestoreが属するDB分類
- Redis・ElastiCache・Memorystore — キャッシュ・高速KVS
- サーバーレスDB — これらのサービスのサーバーレス側面
- グローバル分散DB — より高度なグローバル分散の概念