3

要件:

  • ユーザーは会社への登録と退会が自由にできます。
  • ユーザーは、登録している会社の投稿のみを取得する必要があります。
  • ユーザーは、既に気に入った/気に入らなかった投稿を表示すべきではありません

現在、私たちが行っていることは、ユーザーが会社に参加すると、関連する投稿をユーザーにコピーしUser_Feed、クライアントが投稿を取得することです。

ここで、40,000 件の投稿と 500,000 人のユーザーがいるとします。会社に参加するユーザーごとに、40K のデータをユーザー フィードにコピーする必要があります。または、会社が新しい投稿を投稿するとき、500KUSER_FEED秒に渡す巨大なファンアウト オブジェクトを作成する必要があります。

これはスケーラブルではありません。

David East は投稿の中で、ファンアウト手法は何百万ものレコードをサポートしていると述べていますが、彼の例でさえ、どうすれば 100 万人のフォロワーを処理できるのでしょうか?

私たちは間違った方向に進んでいるように感じます。
私たちの問題に対するより良い解決策はありますか?

現在、次の構造があります。

Companies(~20 companies) 
{
    companyId:  {
        ...comanyInfo
    }
}

Users (~500K users)

  uid: {
     ...userInfo
   }

User_Companies (500k * max(20 companies)) 

 uid: {
    company1: true,
    company2: true,
    ....
 }  


Company_Users (20 * max(500K users)) 

     companyId: {
        uid1: true,
        uid2: true,
        ....
     }   

 Company_POSTS (2K posts/company) 

 {
    companyId: {
        postId: {
            ...postInfo
        }
    }
 }

 User_Feed (For each user (500K))
  {
    uid: 
        posId : {
            like: true
        }
 }

この投稿はFirebase Google グループでも開かれています

4

0 に答える 0