我需要在使用Firebase实时数据库的移动应用程序中实现最新的帖子页面。
系统说明:
应用程序用户(AU)可以订阅创建帖子的内容创建者(CC)。例如,我们有一个用户AU123,该用户订阅了内容创建者CC1,CC2,CC3。另一个用户AU456订阅CC2,CC6,CC7,执行getLatestPosts(AU123)操作的最佳方式是什么?
通常,它提供了与Facebook非常相似的功能(但由于我们仅依靠发布日期来构建最新列表,因此简化了方式)。我们的用户关注(订阅)其他用户(内容创建者)。当我们打开Facebook时,我们可以看到最新的帖子列表。
一个简单的解决方案是为每个用户简单地创建“最新”列表,并且CC帖子发布后,他还将对该帖子的引用附加到该列表。但是要让1000个用户订阅CC,我们需要将该postID附加到1000个列表中。
另一种方法可能是将所有对帖子的引用与时间戳一起存储在列表中。然后,每个用户都可以获取该列表,并仅从CC中选择其订阅的帖子。该解决方案也不是最佳选择,因为帖子列表很快就会变得很长,甚至找到属于订阅CC的单个帖子也要花费一些时间(假设我们有1000 CC每天创建1个帖子,而用户只订阅了很少一部分他们)。
您是否有任何文章或想法如何解决此问题?仅使用Firebase数据库甚至有可能以合理的方式解决问题?
亲切的问候
答案 0 :(得分:1)
您似乎已经有了两种有效的方法,并且正在做出正确的考虑。写时复制和读时客户端联接都是常见且有效的。
大多数大规模执行此操作的系统会结合这两种方法,根据内容创建者的订阅者数量来决定是复制还是加入。
我想消除的一件事是查找速度很慢。许多刚接触Firebase的开发人员都这么认为,但Firebase can pipeline most of these requests over its existing web socket connection的情况却很少。