Firebase は、クライアント アクセスやリアルタイムのデータ同期が可能な 2 つのクラウドベースのデータベース ソリューションを提供します。
Cloud Firestore は、Firebase のモバイルアプリ開発用の最新データベースです。直感的な新しいデータモデルで Realtime Database をさらに強化しています。Cloud Firestore は、Realtime Database よりも多彩で高速なクエリと高性能なスケーリングが特長です。
Realtime Database は従来からある Firebase のデータベースです。リアルタイムのクライアント間同期が必要なモバイルアプリのための、効率的でレイテンシが低いソリューションです。
Firebase で推奨されるデータベース
データベース ソリューションの選択は数多くの要素によって異なりますが、特定の機能については、最適なデータベースが推奨されます。
どちらのソリューションでも以下が提供されます。
- クライアントの最初の SDK(サーバーのデプロイとメンテナンスは不要)
- リアルタイム アップデート
- 無料枠の後は従量課金制
考慮すべきポイント
両方のデータベースに共通する優れたコア機能に加えて、以下に示したすべての考慮事項がアプリの成功にどのように影響するかを検討してください。
データベースの役割 |
アプリでデータベースを使用する目的
まず、基本的なクエリを使用してデータを同期します。
高度なクエリ、並べ替え、トランザクションが不要な場合は、Realtime Database をおすすめします。
高度なクエリ、並べ替え、トランザクション。
たとえば、e コマースのアプリでデータの複雑な操作を行う必要がある場合は、Cloud Firestore をおすすめします。
|
データに対するオペレーション |
アプリのデータベース使用状況
頻繁に変更される数 GB 以下のデータ。
デジタル ホワイトボード アプリなどのアプリで一連の小規模な更新を送信する場合は、Realtime Database をおすすめします。
数百 GB~TB 単位のデータが、変更の頻度よりもはるかに頻繁に読み取られます。
非常に大規模なデータセットで、バッチ オペレーションが頻繁に必要となる場合は、Cloud Firestore をおすすめします。
|
データモデル |
データを次のように構造化する
簡単な JSON ツリー。
JSON 非構造化データの場合は、Realtime Database をおすすめします。
ドキュメントがコレクションにまとめられます。
構造化ドキュメントとコレクションの場合は、Cloud Firestore をおすすめします。
|
サービス提供状況 |
可用性のニーズ
99.999% という非常に高い稼働時間の保証。
たとえば、e コマースのアプリで可用性が最も重要な場合は、Cloud Firestore をおすすめします。
99.95% 以上の稼働時間の保証。
可用性が非常に高いものの、不可欠ではない場合は、Cloud Firestore または Realtime Database をおすすめします。
|
ローカルデータに対するオフライン クエリ |
アプリで、接続が制限されているか接続されていないデバイス上でクエリを実行する必要がある
よくある。
ユーザーがオフラインのときにローカルデータに対して高度なクエリ機能を使用する場合は、Cloud Firestore をおすすめします。
めったにないか、まったくない。
ユーザーが常にオンラインであると予想される場合は、Cloud Firestore または Realtime Database をおすすめします。
|
検討すべきその他の重要事項
これまでの主な考慮事項について検討すると、データベースを選択できるようになります。まだ長所と短所を検討している場合は、このセクションで Cloud Firestore と Realtime Database のその他の違いについてご覧ください。
データモデル
Realtime Database と Cloud Firestore はどちらも NoSQL データベースです。
Realtime Database | Cloud Firestore |
---|---|
データを 1 つの大きな JSON ツリーとして保存します。
Realtime Database データモデルの詳細をご覧ください。 |
データをドキュメントのコレクションとして保存します。
Cloud Firestore データモデルの詳細をご覧ください。 |
リアルタイムおよびオフライン サポート
どちらのデータベースもモバイル向けのリアルタイム SDK を備えており、オフライン対応アプリのローカルデータ ストレージに対応しています。
Realtime Database | Cloud Firestore |
---|---|
Apple、Android の各クライアント向けのオフライン サポート。 | Apple、Android、ウェブの各クライアント向けのオフライン サポート。 |
プレゼンス
クライアントがオンラインかオフラインかを知るために役立ちます。Firebase Realtime Database ではクライアントの接続ステータスを記録し、クライアントの接続状態が変化するたびに更新できます。
Realtime Database | Cloud Firestore |
---|---|
プレゼンスをサポート。 | ネイティブではサポートされません。Cloud Functions を使用して Cloud Firestore と Realtime Database を同期することで、Realtime Database でのプレゼンスに対するサポートを活用できます。Cloud Firestore でプレゼンスを構築するをご覧ください。 |
クエリ
いずれのデータベースもクエリによってデータの取得、並べ替え、フィルタリングを行うことができます。
Realtime Database | Cloud Firestore |
---|---|
制限付きの並べ替えとフィルタリング機能を備えた多層型クエリ。
|
複合型の並べ替えとフィルタリング機能を備えたインデックス付きクエリ。
|
書き込みとトランザクション
Realtime Database | Cloud Firestore |
---|---|
基本的な書き込みオペレーションとトランザクション オペレーション。
|
高度な書き込みオペレーションとトランザクション オペレーション。
|
信頼性とパフォーマンス
Realtime Database | Cloud Firestore |
---|---|
Realtime Database はリージョン単位のソリューションです。
|
Cloud Firestore は自動的にスケールするリージョンまたはマルチリージョンのソリューションです。
|
スケーラビリティ
Realtime Database | Cloud Firestore |
---|---|
スケーリングにはシャーディングが必要です。
|
スケーリングは自動で行われます。
|
セキュリティ
Realtime Database | Cloud Firestore |
---|---|
承認と検証を分離するカスケード ルール。
|
承認と検証を組み合わせた非カスケード ルール。
|
料金
どちらのソリューションも Spark と Blaze の料金プランで利用可能です。
Realtime Database | Cloud Firestore |
---|---|
帯域幅とストレージにのみ課金されますが、課金レートは高くなります。 Realtime Database の料金プランの詳細をご覧ください。 |
主な課金対象は、データベースで実行されているオペレーション(読み取り、書き込み、削除)、帯域幅、ストレージです。帯域幅とストレージへの課金レートは低く設定されています。
Cloud Firestore は、App Engine プロジェクトの 1 日の使用量上限に対応しており、お客様が設定したコストを超過することはありません。 Cloud Firestore の料金プランの詳細をご覧ください。 |
Cloud Firestore と Realtime Database の使用
単一の Firebase アプリまたはプロジェクト内で両データベースを並行して使用することができます。いずれの NoSQL データベースも保存できるデータタイプは同じであり、クライアント ライブラリの動作もほぼ同じです。アプリで両方のデータベースを使用する場合には、前述の相違点に注意してください。
Realtime Database と Cloud Firestore の両方で利用可能な機能についてご確認ください。
データベースを選択する準備
この比較が Firebase データベース ソリューションの決定に役立てば幸いです。これで Firebase プロジェクトにデータベースを追加する方法を学習できます。
- Cloud Firestore については、Cloud Firestore を使ってみるをご覧ください。
- Realtime Database については、ご使用のプラットフォームの「スタートガイド」トピック(Apple、Android、C++、Unity、ウェブ、または REST)をご覧ください。