firestoreのチューニングをする

個人で使ってる特に何もチューニングしていないdbがあるのでこいつを改善する
月700円くらいかかってる

ベース

最大 100 階層までデータをネストできます。
ネストした場合としなかった場合の差
サブコレにした場合と複合indexを利用した場合の比較が必要そう
ホットスポットに注意する
ドキュメントの ID によってデータを分割して保持するので、アクセスがランダムになるようにIDはシーケンシャルでないようにする

Cloud Firestore を使用すると、以下の項目に対し課金されます。
読み取り、書き込み、削除を行うドキュメントの数。
集約クエリにより照合されたインデックス エントリの数。クエリにより照合されたインデックス エントリのバッチ(1,000 個まで)ごとに 1 回のドキュメントの読み取りとして課金されます。
データベースにより使用されるストレージの容量(メタデータとインデックスのオーバーヘッドを含む)。
ネットワーク帯域幅の使用量。
- 読み取り、書き込み、削除
書き込みの場合、set オペレーションまたは update オペレーションを実行するたびに書き込み 1 件としてカウント
blukwriterの時はどうなるのかな。書き込み対象のドキュメント数ごとに課金?
クエリの結果をリッスンする場合、結果セット内のドキュメントを追加または更新するたびに、1 回の読み取り
firestoreでstreamは注意が必要そう
カーソル。長期実行クエリを再開できます。
ページトークン。クエリ結果のページを設定できます。
上限。取得する結果の数を指定します。
オフセット。一定数のドキュメントをスキップできます。
カーソル、ページトークン、および上限を使用する場合、追加コストは発生しないらしい。
オフセットは飛ばしたドキュメント数分課金
コレクション ID リストのリクエストは1 回のドキュメント読み取り分

その他の課金対象
Cloud Firestore に保存するデータの容量
サンプル ポイントの1か月平均をとってデータベースのストレージ サイズを計算
ネットワーク帯域幅
シリアル化されたメッセージ形式に基づいてレスポンスのサイズを計算

ロギング
パフォーマンスモニタリング
その他(チューニング関連)