我目前正在建立一个基于firebase的社区,该社区有与Facebook类似的时间表和帖子。当用户创建帖子时,它应该自动弹出他或她的粉丝的时间线。
Google建议通过粉丝更新来完成此操作:https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html
但我想知道:如果用户有 - 请说 - 20k粉丝,我首先要下载所有关注者的列表(即使是像{{1一样的索引)这将是非常大的)然后使用扇出方法更新每个用户时间轴,如下所示:
{ <user-id>: true }
安全规则也很难确定允许用户更新的时间表。
我的方法是一个监视全球帖子的服务器。如果有更新或添加的子项,它会查找创建者的关注者并相应地更新时间轴。通过这种方式,我不必处理安全规则,而且客户的工作要少得多。
我错了吗?
答案 0 :(得分:2)
如果您愿意在服务器上运行扇出,请务必执行此操作。当要散开的数据量太大而无法在客户端上运行时,它确实会消除潜在的瓶颈。
但绝大多数项目永远不会达到这个水平,并且在项目生命周期的早期,许多开发人员不愿意运行服务器,即使只是为了扇出数据。因此,对于那些开发人员来说,客户端扇出是一个很好的选择。