Firebase には、クライアントからアクセス可能なクラウドベースのドキュメント データベースが 2 つ用意されています。新規のお客様には、Cloud Firestore から始めることをおすすめします。
Cloud Firestore は、25 万人を超えるデベロッパーから信頼されており、エンタープライズ クラスの JSON 互換ドキュメント データベースとしておすすめします。クエリ可能性、拡張性、高可用性を必要とするリッチデータモデルを使用するアプリケーションに適しています。また、低レイテンシのクライアント同期とオフライン データアクセスも提供します。
Realtime Database は従来の Firebase JSON データベースです。シンプルなルックアップと低レイテンシの同期を必要とし、スケーラビリティに制限がある単純なデータモデルを使用するアプリケーションに適しています。
検討すべきその他の重要事項
これまでの主な考慮事項について検討すると、データベースを選択できるようになります。引き続き長所と短所を検討されている場合は、このセクションで Cloud Firestore と Realtime Database のその他の違いについてご覧ください。
データモデル
Realtime Database と Cloud Firestore はどちらも NoSQL データベースです。
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
データをドキュメントのコレクションとして保存します。
詳しくは、Cloud Firestore データモデルをご覧ください。 |
データを 1 つの大きな JSON ツリーとして保存します。
詳しくは、Realtime Database データモデルをご覧ください。 |
リアルタイムおよびオフライン サポート
どちらのデータベースもモバイル向けのリアルタイム SDK を備えており、オフライン対応アプリのローカルデータ ストレージに対応しています。
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
Apple、Android、ウェブの各クライアント向けのオフライン サポート。 | Apple、Android の各クライアント向けのオフライン サポート。 |
Presence
クライアントがオンラインかオフラインかを知るために役立ちます。Firebase Realtime Database ではクライアントの接続ステータスを記録し、クライアントの接続状態が変化するたびに更新できます。
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
ネイティブではサポートされません。Cloud Functions を使用して Cloud Firestore と Realtime Database を同期することで、Realtime Database のプレゼンスに対するサポートを構築できます。Cloud Firestore でプレゼンスを構築するをご覧ください。 | プレゼンスをサポート。 |
クエリ
いずれのデータベースもクエリによってデータの取得、並べ替え、フィルタリングを行うことができます。
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
複合型の並べ替えとフィルタリング機能を備えたインデックス付きクエリ。
|
制限付きの並べ替えとフィルタリング機能を備えた多層型クエリ。
|
書き込みとトランザクション
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
高度な書き込みオペレーションとトランザクション オペレーション。
|
基本的な書き込みオペレーションとトランザクション オペレーション。
|
信頼性とパフォーマンス
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
Cloud Firestore は、自動的にスケーリングするリージョンおよびマルチリージョンのソリューションです。
|
Realtime Database はリージョナル ソリューションです。
|
Uptime
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
非常に高い稼働時間パフォーマンス。
|
高い稼働時間パフォーマンス。
|
スケーラビリティ
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
スケーリングは自動で行われます。
|
スケーリングにはシャーディングが必要です。
|
セキュリティ
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
承認と検証を組み合わせた非カスケード ルール。
|
承認と検証を分離するカスケード ルール。
|
料金
どちらのソリューションも Spark と Blaze の料金プランで利用可能です。
Cloud Firestore | [ 優先 ] | Realtime Database |
---|---|---|
主な課金対象は、データベースで実行されているオペレーション(読み取り、書き込み、削除)、帯域幅、ストレージです。帯域幅とストレージへの課金レートは低く設定されています。
Cloud Firestore は、App Engine プロジェクトの 1 日の費用上限をサポートしており、お客様が設定したコストを超過することはありません。 詳しくは、Cloud Firestore のお支払いプランをご覧ください。 |
帯域幅とストレージにのみ課金されますが、課金レートは高くなります。 詳しくは、Realtime Database のお支払いプランをご覧ください。 |
Cloud Firestore と Realtime Database の使用
単一の Firebase アプリまたはプロジェクト内で両データベースを並行して使用することができます。いずれの NoSQL データベースも保存できるデータタイプは同じであり、クライアント ライブラリの動作もほぼ同じです。アプリで両方のデータベースを使用する場合には、前述の相違点に注意してください。
Realtime Database と Cloud Firestore の両方で利用可能な機能について詳細をご確認ください。
データベースを選択する準備
この比較が Firebase データベース ソリューションの決定に役立てば幸いです。これで Firebase プロジェクトにデータベースを追加する方法を学習できます。
- Cloud Firestore については、Cloud Firestore を使ってみるをご覧ください。
- Realtime Database については、ご使用のプラットフォームの「スタートガイド」トピック(Apple、Android、C++、Unity、ウェブ、または REST)をご覧ください。