Firestore:从单元更新数据的有效方法

时间:2018-10-23 06:56:31

标签: ios swift firebase google-cloud-firestore

我正在尝试找出最有效和可扩展的解决方案,以从表视图单元中的用户交互更新数据。在一个单元格中,用户可以like个帖子,share个帖子或view个视频。视频可以被观看多次,因此计数器需要更新观看次数。

在所有情况下,我计划运行Cloud Functions以在重复数据的地方更新数据,因此我专注于更新一篇文章。


我正在考虑的三个选择:

1。每次互动时都要更新Firebase。

基本上,如果用户点击喜欢,分享或观看视频,它将在firebase中更新帖子。如果他们不同时或立即取消共享,它将从火力堡垒中移除。

这似乎是最简单的解决方案,并且会立即出现,这是我追求的目标,但是如果用户喜欢/不喜欢,分享/取消分享并观看视频3次,则一次写一篇文章的次数是7次用户。此外,云功能还将提取这7个操作并在数据库的其他区域执行写操作。

2。如上所述,但是在批量交易中更新视图

按照与上述相同的步骤处理喜欢/分享,但仅在表格视图单元格消失后才更新视图计数器。一旦拥有,将运行事务以一次写入来更新帖子中的视图。因此,最坏的情况是每个帖子5次写入+云功能触发5次。

我认为这是我的首选解决方案,也是最合乎逻辑的方法,尽管如果用户滚动和单元格消失,应用程序终止以及应用程序进入后台,则需要调用批处理事务,我想这不是太麻烦了。

3。存储所有数据,并在表视图单元格消失时更新帖子

存储用户正在做的事情,而不是写喜欢/分享,然后在表视图单元格消失后,调用事务以在单个事务中更新喜欢,分享和视图。

对于可伸缩性,这似乎是最合乎逻辑的?但是,类似通知到达用户会有所延迟。 (再次,我认为这不是问题)。


我的首选选项是选项2,我只是想知道如果应用程序增长了,并且5次写入变为500次写入,那么效果如何,但是500次写入可能是可以接受的?

如果有人有任何建议或可能的其他选择,我将不胜感激。

0 个答案:

没有答案