uwu

プログラミングの備忘録を書いています。誰かの為になれば幸いです

Firestore Cloud firestoreの公式動画まとめ3

前回の記事の続きです。12まであるのでサクッと終わらせたいところですが
こうして文字に起こしてると結構な時間がかかりますね。
今回の記事はFirestoreの料金についての動画のまとめになります。




www.youtube.com
※この記事で使われている全ての画像はこの動画内から切り抜いたものです。




・Real time databaseの料金設定



DBへダウンロード、アップロードしたデータの量で決まる



・Firestoreの料金設定



CRUD操作を実行した回数によって決まる



C、U操作はwritesになります。



30個の異なるフィールドを一度に変更しても1回としてカウント
20個のドキュメントを読み取ったとき、読み取り回数は20回とカウント
(Firestoreでは全ての検索をドキュメントそのものではなくインデックスを通して行われるため、
日本食レストランのトップ20を検索したときに、検索対象が3000万件あったとしても読み取り回数は20回)



利用料が高価になる例

まずは株式相場の表示をするアプリを例として話していきます。


そのアプリでは全ての銘柄の価格を15秒ごとに更新していて、
誰かがアプリを3分間開きっぱなしにしていた場合、12回の更新(12Read)を受けることになります。



この人が10種類の銘柄をフォローしていた場合、読み取り回数は120回となり
もし1000人のユーザーがアプリを使っていた場合、その3分間だけで12万回の読み取りが発生します。
このペースだと1日平均5750万回読まれることになります。これは約34ドル/日ほどで、それほどの価格ではありません。




では、グループで使えるホワイトボードアプリがあるとして、リアルタイムに絵を描く感覚を得るために、
1秒間に数回の更新を行っていたら、1秒間に多くのRead / Writeが発生する→つまり価格が高くなります。




このように一般的にはリアルタイム性が高く、
アクティブユーザーが多いアプリほど、Cloud Firestoreのコストは高くなります。


予期しないreads/writesにより料金が発生する例


・データベース内の任意のドキュメントをチェックするには、get()やexists()の呼び出しで行うが、この呼び出しは通常読み取りとしてカウントされる



・Cloud Functionsを使った場合



Cloud Functionsとは?
Cloud Functions と Firebase  |  Cloud Functions for Firebase



またレストランのアプリを例にとります。
Colud Functionを使って特定のレストランの評価の平均を計算し、結果の数値を更新するとします。
この場合、ユーザーがレビューを変更する度に全てのレストランのレビューが読み込まれ多くのreadが発生してしまい、予期せぬ価格になる場合があります。



・セキュリティルールを使った場合


セキュリティルールとは?
基本的なセキュリティ ルール  |  Firebase セキュリティ ルール



Google Cloudコンソール


console.cloud.google.comにアクセスして
Google Cloudコンソールから以下のことが確認/設定できます。



・データベースの使用状況
・1日の使用量の上限を設定
・バジェットの設定とアラート



データベースの使用状況は
「App Engine」→「Quotas」をクリック
チェックする項目→Firestore Read Operations/Firestore Entity Writes/Firestore Entity Deletes/Firebase Stored Data



1日の使用量の上限を設定するには
「Setting」→「Edit」


バジェットとアラートの設定は
「Billing」→「Budgets & Alerts」→「Create Budget」



また、Google Cloud のオペレーション スイート(旧称 Stackdriver)機能を使えば、
リクエスト数が多すぎたり少すぎたりする場合や、Cloud Functionsの実行に時間がかかりすぎている等を教えてくれます




Google Cloud のオペレーション スイートの概要 | Google Cloud Blog




4へ続きます。