普段は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にposts
Collectionを置くのをはやめて、users/:user_id
のSubCollection
としてposts
を配置しましょう。
/users/:user_id/posts/:post_id
CollectionGroupでReadする
分散させたCollectionはCollectionGroupで取得出来ます。
const snapshot = await db.collectionGroup("posts").get()
もう遅いので今日はここまで。