さて、 Realtime Database はざっくりまとめたし、次回から導入スピードは上がると思います。
Firestore は使ったことないのですが、いまいち Realtime Database との違いがわからないんですよね。両方ともオフラインサポートしているし、リアルタイムな処理もできるって言いますしね。。。
わからないなら使ってみようと思います。
このブログを機に触ってみようと思います。
Cloud Firestore とは?
Google Cloud インフラストラクチャ上に構築された柔軟でスケーラブルな NoSQL クラウド データベースを使用して、クライアントサイドおよびサーバーサイド開発用のデータを保存および同期します。
Cloud Firestore は、Firebase と Google Cloud からのモバイル、ウェブ、サーバー開発に対応した、柔軟でスケーラブルなデータベースです。Firebase Realtime Database と同様に、リアルタイム リスナーを介してクライアント アプリ間でデータを同期し、モバイルとウェブのオフライン サポートを提供します。
Firestore vs Realtime Database
どちらもデータベースサービスとして似た機能を提供していますが、用途や特性に応じていくつかの重要な違いがあります。以下にそれぞれの特徴と相違点をわかりやすく説明します。
共通点
リアルタイム同期: どちらのデータベースも、データのリアルタイム同期が可能です。これにより、クライアント間でデータがすばやく更新されます。
オフラインサポート: 両方のデータベースともにオフラインサポートがあり、ネットワーク接続がなくてもデータの読み書きが可能です。
比較
Firestore | Realtime Database | |
---|---|---|
データモデル | ドキュメントとコレクション: Firestore はドキュメント指向のデータベースで、データを JSON 形式のドキュメントとして保存し、それをコレクションに整理します。 ネストされたデータ: ネストされたオブジェクトや配列をサポートし、リッチなデータ構造を持つことができます。 |
ツリーストラクチャ: Realtime Database は階層構造の JSON データを使用し、シンプルなキーと値のペアでデータを管理します。 フラットなデータ構造: 大規模なアプリケーションでは、データ構造がフラットであることが推奨されます。 |
クエリ | 強力なクエリ機能: Firestore では複数のフィールドに対する複雑なクエリをサポートし、インデックスを使用して高速に検索できます。 トランザクションとバッチ操作: 複数のドキュメントを一度に更新するトランザクションやバッチ操作が可能です。 |
単純なクエリ機能: Realtime Database のクエリ機能はシンプルで、フィルタリングや並べ替えは可能ですが、複雑なクエリには制限があります。 リアルタイムリスナー: データの変更をリアルタイムで受け取ることができます。 |
スケーラビリティ | 大規模なアプリケーション向け: Firestore は自動スケーリング機能を持ち、データ量やユーザー数が増加してもパフォーマンスを維持します。 | 中小規模のアプリケーション向け: Realtime Database は小規模から中規模のアプリケーションに適しており、大規模なデータセットや多くの同時ユーザーには適していません。 |
地域設定 | マルチリージョン配置: データを複数の地域に配置することで、可用性と耐障害性を向上させることができます。 | 単一リージョン配置: データは単一のリージョンに配置されるため、マルチリージョン配置のオプションはありません。 |
まとめ
・ 複雑なクエリや大規模アプリケーション: 複雑なクエリが必要で、大規模なアプリケーションを構築する場合は Cloud Firestore が適しています。
・ シンプルなデータ構造とリアルタイム同期: シンプルなデータ構造とリアルタイム同期が求められる中小規模のアプリケーションには Realtime Database が適しています。
リアルタイム性はあまり変わらないのだろうか?
料金体系
Cloud Firestore | Spark プラン | Blaze プラン |
---|---|---|
保存データ | 合計 1GiB | GCP 料金 |
ネットワーク通信 | 10 GiB/月 | GCP 料金 |
Document 書き込み | 2万書き込み/日 | GCP 料金 |
Document 読み込み | 5万読み込み/日 | GCP 料金 |
Document 削除 | 2万削除/日 | GCP 料金 |
GCP(us-central1) | 料金 | 料金単位 |
---|---|---|
Document 読み込み | $0.03 | 10万 docs |
Document 書き込み | $0.09 | 10万 docs |
Document 削除 | $0.01 | 10万 docs |
TTL 削除 | $0.01 | 10万 docs |
保存データ | $0.15 | 1GiB/月 |
PITR データ | $0.15 | 1GiB/月 |
バックアップデータ | $0.03 | 1GiB/月 |
リストア操作 | $0.2 | 1GiB |
「偶発的な削除や書き込みから保護します。PITR により、過去のタイムスタンプのドキュメント バージョンが維持されます。」と書かれているのでバージョン管理っぽいですね?
セットアップしてみよう
Firestore トップ画面へ
データベース作成画面へ
データベースを作成する
ロケーションを選ぶ
us-central1
にしたかったけど見当たらなかったのでus-west1
にしてみた東京リージョンでも良かったけどね
セキュリティルールの設定
Realtime Database といい、このセキュリティルールって 初見殺し だと思うんですよね