客户端扇出真的是个好主意吗?

时间:2017-02-06 19:30:55

标签: javascript reactjs firebase firebase-realtime-database

我目前正在建立一个基于firebase的社区,该社区有与Facebook类似的时间表和帖子。当用户创建帖子时,它应该自动弹出他或她的粉丝的时间线。

Google建议通过粉丝更新来完成此操作:https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html

但我想知道:如果用户有 - 请说 - 20k粉丝,我首先要下载所有关注者的列表(即使是像{{1一样的索引)这将是非常大的)然后使用扇出方法更新每个用户时间轴,如下所示:

{ <user-id>: true }

安全规则也很难确定允许用户更新的时间表。

我的方法是一个监视全球帖子的服务器。如果有更新或添加的子项,它会查找创建者的关注者并相应地更新时间轴。通过这种方式,我不必处理安全规则,而且客户的工作要少得多。

我错了吗?

1 个答案:

答案 0 :(得分:2)

如果您愿意在服务器上运行扇出,请务必执行此操作。当要散开的数据量太大而无法在客户端上运行时,它确实会消除潜在的瓶颈。

但绝大多数项目永远不会达到这个水平,并且在项目生命周期的早期,许多开发人员不愿意运行服务器,即使只是为了扇出数据。因此,对于那些开发人员来说,客户端扇出是一个很好的选择。