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

Firebase は、クライアント アクセス可能なクラウドベースのデータベース ソリューションを 2 つ提供しており、次のようなリアルタイムのデータ同期をサポートします。

  • Realtime Database は Firebase の元のデータベースです。これは、リアルタイムでクライアント全体の状態を同期させる必要があるモバイルアプリ向けの効率的で低レイテンシのソリューションです。
  • Cloud Firestore は、Firebase のモバイルアプリ開発用の新しい主力データベースです。直感的な新しいデータモデルで、Realtime Database の成果をさらに向上しています。Cloud Firestore は、Realtime Database よりも豊かで高速なクエリとスケールを備えています。

どちらのデータベースがプロジェクトに適しているか

ベータ版の使用に慣れている方には、新しいプロジェクトに Cloud Firestore をご利用ください。 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 は現在、ベータ版です。
  • ベータ プロダクトの安定性は、完全にリリースされたプロダクトの安定性と必ずしも同じではありません。
  • 異なるリージョンにある複数のデータセンターにデータを格納し、グローバルなスケーラビリティと信頼性を確保します。
  • Cloud Firestore がベータ版を卒業すると、Realtime Database よりも信頼性が向上します。

スケーラビリティ

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

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

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

(ベータ後に)完全に自動的にスケールされるため、複数のインスタンスにデータをシャーディングする必要はありません。

セキュリティ

Realtime Database Cloud Firestore
個別の検証が必要なカスケード ルール。
  • Firebase 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 データベースで同じタイプのデータを保存でき、クライアント ライブラリも同様の方法で動作します。アプリで両方のデータベースを使用する場合には、前述の相違点に注意してください。

ベータ版の Cloud Firestore を試したい場合は、スタートガイドを使用してください。

Realtime Database で利用できる機能の詳細については、Realtime Database のドキュメントをご覧ください。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。