データベース

DynamoDB・Cosmos DB・Firestore だいなもでぃーびー・こすもすでぃーびー・ふぁいあすとあ

DynamoDBCosmos DBFirestoreNoSQLマネージドNoSQLサーバーレス
DynamoDB・Cosmos DB・Firestoreについて教えて

簡単に言うとこんな感じ!

各クラウド大手が提供するフルマネージドのNoSQLデータベースだよ。「億件のデータでもミリ秒で返す」「世界中どこでも低遅延」「サーバー管理ゼロ」が特徴で、スマホアプリやゲームのバックエンドによく使われてるんだ!


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サービスの比較

項目DynamoDBCosmos DBFirestore
クラウドAWSAzureGoogle Cloud
データモデルキーバリュー/ドキュメント多モデルドキュメント
レイテンシ1桁ms保証99パーセンタイル10ms以下通常数十ms
グローバル分散Global Tablesマルチリージョン書き込みマルチリージョン(単一書き込み)
リアルタイム同期DynamoDB StreamsChange 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双方からアクセス可能に

課金モデルの違い

DynamoDBの2つの課金モード プロビジョンドモード ・RCU/WCUを事前に設定 ・予測可能な負荷に最適 ・Auto Scalingで自動調整可 ・コストが予測しやすい ・大量アクセスでは割安 オンデマンドモード ・リクエスト数だけ課金 ・設定が不要で始めやすい ・突発的な負荷に自動対応 ・低トラフィック時は割安 ・スタートアップ・検証向け

関連する規格・RFC

資料内容
Amazon Dynamo論文 (2007)DynamoDB設計の原典
Google F1論文 (2012)Firestoreの基盤技術の源流

関連用語