コンソールへ移動

データベースの選択: Cloud Firestore または Realtime Database

Firebase は、クライアント アクセスやリアルタイムのデータ同期が可能な 2 つのクラウドベースのデータベース ソリューションを提供します。

  • Realtime Database は従来からある Firebase のデータベースです。リアルタイムのクライアント間同期が必要なモバイルアプリのための、効率的でレイテンシが低いソリューションです。
  • Cloud Firestore は、Firebase のモバイルアプリ開発用の新しい主力データベースです。直感的な新しいデータモデルで、Realtime Database をさらに効果的にしています。Cloud Firestore は、Realtime Database よりも多彩で高速なクエリと高性能なスケーリングが特長です。

プロジェクトに応じたデータベースの選択

新しくプロジェクトを開始する場合、ほとんどのケースで Cloud Firestore のご利用をおすすめします。Cloud Firestore では、今後リリースされる強力な機能に対応できるよう、機能性、パフォーマンス、スケーラビリティを強化したインフラストラクチャを提供しています。実装予定の高度な機能に加え、新しいクエリの種類、より堅牢なセキュリティ ルール、強化されたパフォーマンスを期待できます。

Cloud Firestore と Realtime Database のどちらかを選ぶにあたっては、以下の相違点を考慮してください。

データモデル

Realtime Database と Cloud Firestore はどちらも NoSQL データベースです。

Realtime Database Cloud Firestore
データを 1 つの大きな JSON ツリーとして保存します。
  • シンプルなデータは非常に簡単に保存できます。
  • 複雑で階層的なデータについては、大規模な整理を行うことが難しいです。

Realtime Database データモデルの詳細をご覧ください。

コレクションにまとめられたドキュメントにデータを保存します。
  • シンプルなデータはドキュメントに保存するのが簡単です。これは JSON と非常によく似ています。
  • 複雑で階層的なデータについては、ドキュメント内のサブコレクションを使用することで、大規模な整理を簡単に行うことができます。
  • 非正規化とデータの平坦化が少なくて済みます。

Cloud Firestore データモデルの詳細をご覧ください。

リアルタイムおよびオフライン サポート

どちらのデータベースもモバイル向けのリアルタイム SDK を備えており、オフライン対応アプリのローカルデータ ストレージに対応しています。

Realtime Database Cloud Firestore
iOS と Android のみのモバイル クライアント向けオフライン サポート。 iOS、Android、ウェブ クライアント向けのオフライン サポート。

クエリ

いずれのデータベースもクエリによってデータの取得、並べ替え、フィルタリングを行うことができます。

Realtime Database Cloud Firestore
制限付きの並べ替えとフィルタリング機能を備えた多層型クエリ。
  • 1 つのクエリで、プロパティの並べ替えとフィルタリングの一方を行うことはできますが、両方はできません。
  • クエリはデフォルトで多層型です。常にサブツリー全体を返します。
複合型の並べ替えとフィルタリング機能を備えたインデックス付きクエリ。
  • 1 つのクエリで、フィルタをつなぎ合わせたり、プロパティのフィルタリングと並べ替えを組み合わせたりすることができます。
  • サブコレクション用の層が少ないクエリの書き込み: コレクション全体ではなく、ドキュメント全体あるいはドキュメント内サブコレクションのクエリが可能です。
  • クエリはデフォルトでインデックス付きになります。クエリのパフォーマンスは、データセットではなく、結果セットのサイズに比例します。

書き込みとトランザクション

Realtime Database Cloud Firestore
基本的な書き込みオペレーションとトランザクション オペレーション。 アトミックな書き込みオペレーションとトランザクション オペレーション。

信頼性とパフォーマンス

Realtime Database Cloud Firestore
Realtime Database はリージョン単位のソリューションです。
  • レイテンシが非常に低いため、頻繁な状態同期に最適です。
  • データベースは、単一リージョン内のゾーン利用可能性に制限されます。
Realtime Database のパフォーマンスと信頼性の特性について詳しくは、サービスレベル契約をご覧ください。
Cloud Firestore は自動的にスケールするマルチリージョン ソリューションです。
  • 異なるリージョンにある複数のデータセンターにデータを格納し、グローバルなスケーラビリティと信頼性を確保します。
  • Google Cloud Platform と同等の安定性と信頼性があります。
Cloud Firestore のパフォーマンスと信頼性の特性について詳しくは、サービスレベル契約をご覧ください。

スケーラビリティ

Realtime Database Cloud Firestore
スケーリングにはシャーディングが必要です。

1 つのデータベースで、約 100,000 件の同時接続と、毎秒 1,000 回の書き込みまでスケーリングが可能です。それ以上スケーリングするには、複数のデータベースにまたがるデータのシャーディングが必要になります。

スケーリングは自動で行われます。

完全な自動スケーリングに対応しています。現在のところ、約 100 万件の同時接続と、毎秒 10,000 回の書き込みまでのスケーリング制限があります。将来的には、これらの制限を引き上げる予定です。

セキュリティ

Realtime Database Cloud Firestore
個別の検証が必要なカスケード ルール。
  • Realtime Database ルールが唯一のセキュリティ オプションです。
  • 読み取りルールと書き込みルールはカスケード式に適用されます。
  • validate ルールを使用して、個別にデータを検証する必要があります。
モバイル、ウェブ、サーバー SDK 用の、よりシンプルで堅牢なセキュリティ。
  • モバイルおよびウェブの SDK では Cloud Firestore セキュリティ ルールを使用します。サーバー SDK では、Identity and Access Management(IAM)を使用します。
  • ワイルドカードを使用する場合を除き、ルールがカスケード式に適用されることはありません。
  • データの検証は自動的に行われます。
  • ルールでクエリを制約できます。クエリの結果にユーザーがアクセスできないデータが含まれている場合、クエリ全体が失敗します。

料金

どちらのソリューションも Spark、Flame、Blaze の料金プランで利用可能です。

Realtime Database Cloud Firestore
帯域幅とストレージにのみ課金されますが、課金レートは高くなります。

Realtime Database の料金プランの詳細をご覧ください。

主な課金対象は、データベースで実行されているオペレーション(読み取り、書き込み、削除)、帯域幅、ストレージです。帯域幅とストレージへの課金レートは低く設定されています。

Cloud Firestore は、Google App Engine プロジェクトの 1 日の支出限度額に対応しており、お客様が設定したコストを超過することはありません。

Cloud Firestore の料金プランの詳細をご覧ください。

Cloud Firestore と Realtime Database の使用

単一の Firebase アプリまたはプロジェクト内で両データベースを並行して使用することができます。いずれの NoSQL データベースも保存できるデータタイプは同じであり、クライアント ライブラリの動作もほぼ同じです。アプリで両方のデータベースを使用する場合には、前述の相違点に注意してください。

Realtime DatabaseCloud Firestore の両方で利用可能な機能についてご確認ください。