我正在尝试找出最有效和可扩展的解决方案,以从表视图单元中的用户交互更新数据。在一个单元格中,用户可以like
个帖子,share
个帖子或view
个视频。视频可以被观看多次,因此计数器需要更新观看次数。
在所有情况下,我计划运行Cloud Functions以在重复数据的地方更新数据,因此我专注于更新一篇文章。
我正在考虑的三个选择:
基本上,如果用户点击喜欢,分享或观看视频,它将在firebase中更新帖子。如果他们不同时或立即取消共享,它将从火力堡垒中移除。
这似乎是最简单的解决方案,并且会立即出现,这是我追求的目标,但是如果用户喜欢/不喜欢,分享/取消分享并观看视频3次,则一次写一篇文章的次数是7次用户。此外,云功能还将提取这7个操作并在数据库的其他区域执行写操作。
按照与上述相同的步骤处理喜欢/分享,但仅在表格视图单元格消失后才更新视图计数器。一旦拥有,将运行事务以一次写入来更新帖子中的视图。因此,最坏的情况是每个帖子5次写入+云功能触发5次。
我认为这是我的首选解决方案,也是最合乎逻辑的方法,尽管如果用户滚动和单元格消失,应用程序终止以及应用程序进入后台,则需要调用批处理事务,我想这不是太麻烦了。
存储用户正在做的事情,而不是写喜欢/分享,然后在表视图单元格消失后,调用事务以在单个事务中更新喜欢,分享和视图。
对于可伸缩性,这似乎是最合乎逻辑的?但是,类似通知到达用户会有所延迟。 (再次,我认为这不是问题)。
我的首选选项是选项2,我只是想知道如果应用程序增长了,并且5次写入变为500次写入,那么效果如何,但是500次写入可能是可以接受的?
如果有人有任何建议或可能的其他选择,我将不胜感激。