Firestoreを使用してSNSのようなアプリを作成しています。
Firestoreは通常のSQLと違い正規化はせず、データを冗長させて持たせた方が良いと多くのサイトにあるため、以下のようなDB構成にしています。
ですが、以下構成だと冗長して持たせているデータの生合成を保つために、ユーザ情報に更新があった場合はPostコレクション内のそれぞれで持っているユーザ情報も更新する必要があります。
前提
・料金を抑えるが管理はしやすく
・リアルタイム性はそこまで求められない
検討内容
現時点で私が考えられるのは、
①Postコレクション内のユーザ情報をreference型にしてUserコレクション内のドキュメントのパスを記載する
⇨メリット:Userコレクションを更新するだけで良い
デメリット:Postコレクション内のドキュメント読み込みとreference型のパス読み込みでアクセス数が増加する。
②Firebase CloudFunctionでトリガー設定して、ユーザ情報が書き換えられたら一括更新
③アプリ側で、ユーザ情報更新時に一括更新させる
ご相談したいこと
②③は実装方法をもう少し詳しく調べる必要がありますが、whereなどを使用して条件指定でマッチした複数ドキュメントでも実装できるのか。
①〜③で最善の方法はどれなのか。また、他に良い方法があるのか。
Firestore構成
UserCollection
1Users - document - userid 2 - userimg 3 - username...
PostCollection
1Posts - document - postid 2 - userimg 3 - username 4 - postcontent 5 - postimg...
回答1件
あなたの回答
tips
プレビュー