普段はFirebaseの技術コンサルティングをやってます。
最近、古き良き大手さんと契約させて頂きました👏🏻
少しづつですが、大手さんもクラウドを使い始めて本当にいいことだなぁっと思っとります。
今日は__CollectionGroup__の使い方について説明しようと思います。
__CollectionGroup__が出てきた当初に書いた記事があるのでまずここを読んでもらって、さらに適切に使いこなすにはどうすればいいのかを考えました。
[参考] 待ち焦がれたCollectionGroupがCloud Firestoreへやってきた。
CollectionGroupがすごいのはReadではなくWrite
__Cloud Firestore__ではCollectionのWriteに制限が設けられています。
| Limit | Details |
|---|---|
| Maximum write rate to a collection in which documents contain sequential values in an indexed field | 500 per second |
インデックス付きのCollectionへの連続的な書き込みは1秒間に500までとなります。
実際かなり大きいので問題になる場合は少ないですが、例えばアクティブユーザー全員が投稿するpostsなんて言うCollectionをRootに持っていたとすれば性能的に問題になる場面も出てくるはずです。
CollectionのWrite性能を向上させるテクニック
負荷の高いCollectionは分散させる
RootにpostsCollectionを置くのをはやめて、users/:user_idのSubCollectionとしてpostsを配置しましょう。
/users/:user_id/posts/:post_id
CollectionGroupでReadする
分散させたCollectionは__CollectionGroup__で取得出来ます。
const snapshot = await db.collectionGroup("posts").get()
もう遅いので今日はここまで。
