要求:
- 用户可以自由注册公司和退订。
- 用户应该只获得他们注册的公司的帖子。
- 用户不应该看到他们已经喜欢/不喜欢的帖子
目前,我们正在做的是,当用户加入公司时,我们将相关帖子复制给用户User_Feed
,客户端获取帖子。
现在假设我们有 40K 帖子和 500K 用户。每个加入公司的用户,我们需要将 40K 的数据复制到用户提要。或者当一个公司发布一个新帖子时,我们需要构建一个巨大的扇出对象来传递到 500K USER_FEED
s。
这是不可扩展的。
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中打开