3

要求:

  • 用户可以自由注册公司和退订。
  • 用户应该只获得他们注册的公司的帖子。
  • 用户不应该看到他们已经喜欢/不喜欢的帖子

目前,我们正在做的是,当用户加入公司时,我们将相关帖子复制给用户User_Feed,客户端获取帖子。

现在假设我们有 40K 帖子和 500K 用户。每个加入公司的用户,我们需要将 40K 的数据复制到用户提要。或者当一个公司发布一个新帖子时,我们需要构建一个巨大的扇出对象来传递到 500K USER_FEEDs。

这是不可扩展的。

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 Group中打开

4

0 回答 0