ジャコ Lab

プログラミング関連のメモ帳的ブログです

Cloud Firestore を準備する - 概要と Realtime Database との比較、あと料金体系メモ

zako-lab929.hatenablog.com

さて、 Realtime Database はざっくりまとめたし、次回から導入スピードは上がると思います。

Firestore は使ったことないのですが、いまいち Realtime Database との違いがわからないんですよね。両方ともオフラインサポートしているし、リアルタイムな処理もできるって言いますしね。。。

わからないなら使ってみようと思います。
このブログを機に触ってみようと思います。

Cloud Firestore とは?

Google Cloud インフラストラクチャ上に構築された柔軟でスケーラブルな NoSQL クラウド データベースを使用して、クライアントサイドおよびサーバーサイド開発用のデータを保存および同期します。

Cloud Firestore は、Firebase と Google Cloud からのモバイル、ウェブ、サーバー開発に対応した、柔軟でスケーラブルなデータベースです。Firebase Realtime Database と同様に、リアルタイム リスナーを介してクライアント アプリ間でデータを同期し、モバイルとウェブのオフライン サポートを提供します。

Firestore vs Realtime Database

ChatGPT (GPT-4o) に聞いてみよう!

どちらもデータベースサービスとして似た機能を提供していますが、用途や特性に応じていくつかの重要な違いがあります。以下にそれぞれの特徴と相違点をわかりやすく説明します。

共通点

リアルタイム同期: どちらのデータベースも、データのリアルタイム同期が可能です。これにより、クライアント間でデータがすばやく更新されます。
オフラインサポート: 両方のデータベースともにオフラインサポートがあり、ネットワーク接続がなくてもデータの読み書きが可能です。

比較

Firestore Realtime Database
データモデル ドキュメントとコレクション: Firestore はドキュメント指向のデータベースで、データを JSON 形式のドキュメントとして保存し、それをコレクションに整理します。
ネストされたデータ: ネストされたオブジェクトや配列をサポートし、リッチなデータ構造を持つことができます。
ツリーストラクチャ: Realtime Database は階層構造の JSON データを使用し、シンプルなキーと値のペアでデータを管理します。
フラットなデータ構造: 大規模なアプリケーションでは、データ構造がフラットであることが推奨されます。
クエリ 強力なクエリ機能: Firestore では複数のフィールドに対する複雑なクエリをサポートし、インデックスを使用して高速に検索できます。
トランザクションとバッチ操作: 複数のドキュメントを一度に更新するトランザクションやバッチ操作が可能です。
単純なクエリ機能: Realtime Database のクエリ機能はシンプルで、フィルタリングや並べ替えは可能ですが、複雑なクエリには制限があります。
リアルタイムリスナー: データの変更をリアルタイムで受け取ることができます。
スケーラビリティ 大規模なアプリケーション向け: Firestore は自動スケーリング機能を持ち、データ量やユーザー数が増加してもパフォーマンスを維持します。 中小規模のアプリケーション向け: Realtime Database は小規模から中規模のアプリケーションに適しており、大規模なデータセットや多くの同時ユーザーには適していません。
地域設定 マルチリージョン配置: データを複数の地域に配置することで、可用性と耐障害性を向上させることができます。 単一リージョン配置: データは単一のリージョンに配置されるため、マルチリージョン配置のオプションはありません。
なるほど、わからん

まとめ

複雑なクエリや大規模アプリケーション: 複雑なクエリが必要で、大規模なアプリケーションを構築する場合は Cloud Firestore が適しています。
シンプルなデータ構造とリアルタイム同期: シンプルなデータ構造とリアルタイム同期が求められる中小規模のアプリケーションには Realtime Database が適しています。

「大規模 or 小規模」「検索が強い or 弱いか」の違い?
リアルタイム性はあまり変わらないのだろうか?

料金体系

Cloud Firestore Spark プラン Blaze プラン
保存データ 合計 1GiB GCP 料金
ネットワーク通信 10 GiB/月 GCP 料金
Document 書き込み 2万書き込み/日 GCP 料金
Document 読み込み 5万読み込み/日 GCP 料金
Document 削除 2万削除/日 GCP 料金
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
とりあえず Realtime Database に比べて安い!
TTL って何?
Time to Live の略ですかね?有効期限?
PITR って何?
Point In Time Recovery の略らしい
「偶発的な削除や書き込みから保護します。PITR により、過去のタイムスタンプのドキュメント バージョンが維持されます。」と書かれているのでバージョン管理っぽいですね?

セットアップしてみよう

Firestore トップ画面へ

Firebase プロジェクトトップ画面
Firebase プロジェクトトップ画面

データベース作成画面へ

Firestore トップ画面
Firestore トップ画面

データベースを作成する

ロケーションを選ぶ

ロケーション選択ダイアログ
ロケーション選択ダイアログ

Reailtime Databaseと同じus-central1にしたかったけど見当たらなかったのでus-west1にしてみた
東京リージョンでも良かったけどね
セキュリティルールの設定

ロックモードテストモード
セキュリティルール設定ダイアログ

Realtime Database といい、このセキュリティルールって 初見殺し だと思うんですよね

Cloud Firestoreは使ったことないから全然わからん

完成

完成?
完成?

まとめ

準備完了!とりあえず使ってみるしかない!