Realtime DatabaseとCloud Firestoreの共通点
Realtime DatabaseとCloud Firestoreは以下のような共通点を持っています。
- クライアントファーストのSDK(デプロイして維持するサーバーが不要)
- リアルタイム更新
- 無料利用枠があり、その後は使用分に従う支払い
どちらのサービスを採用するかは、上記の共通点に加え、技術・ビジネスの両面において得意・不得意なことがあるため、サービスの詳細を知る必要があります。前半はそれぞれのサービスが得意なことを、後半は実際に使用する際に気になる料金体系についての大きな違いについて記載します。
Realtime Databaseについて
Realtime Databaseは、データをJSONとして保存し、Webやネイティブを含めた様々なプラットフォームで構築されるクライアント全てに対してリアルタイムで同期されます。Firebase Realtime Database SDKはデータを各デバイスに保持するため、オフラインでも応答性を維持しリアルタイムイベントを止めずに使用することができます。
電波状況が不安定なモバイル端末や、回線が不安定な状況などでの使用を視野に入れているため、各デバイスの接続が復帰した際にオフラインの間に発生したデータの変更を含めてRealtime Database側に更新を同期、競合をマージする仕組みとなっています。
Realtime Databaseはクライアントの接続状態がオンラインかオフラインかの接続状態を記録し、変化のたびに更新を提供できます。また、Realtime Databaseにおいては、料金体系がストレージ量とダウンロード量によって決まる形になっています(逆にFirestoreの場合は書き込み・読み込みの回数によって料金が決まります)。
Realtime Databaseの料金体系は、2023年9月現在、保存は5ドル/GB、ダウンロードは1ドル/GBとなっており、無料枠は、保存は1GB、ダウンロードは10GBです。この料金体系の通り、通信の回数や書き込み回数などは料金がかからないため、
- ストレージの上限が大規模ではない
- データの書き込み頻度が高い
といった条件のプロダクトでは、料金を抑えることができるかもしれません。デジタルホワイトボードアプリなど、アプリが小さな更新のストリームを送信する場合にRealtimeデータベースが向いている、という公式の記載があります。