已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以使用事实与引用来回答.
昨天关门了。
Improve this question
我知道类似的问题已经提出了几次,但我权衡双方的利弊,想看看我是不是错了。
我有一个应用程序,它有一个聊天页面。每个聊天对象由一个firestore文档表示。我目前的方法实际上是从Typesense加载futures同步到Firestore,因为它便宜得多,而且查询效果更好。缺点是,由于数据是futures,显然不会有实时更改,刷新屏幕会导致所有数据的重新加载。
另一方面是流,因为他们将有实时数据更新和刷新不会中断其他数据存在。但是,它似乎更昂贵。如果100个用户从流方法加载100个聊天,它可以总结,同时,如果同样的情况下发生在未来的方法,它的成本将大大降低。
基于这些原因,我现在倾向于未来的方法,但我仍然怀疑这是否最好的解决方法,是否有我没有考虑过的地方?谢谢!
1条答案
按热度按时间piah890a1#
在您描述的示例中,
Stream
应该是您的首选解决方案。原因如下:
Future
**(毫无疑问,即使通过Typesense也是如此)将花费更多的成本,因为您需要多次刷新数据。Stream
:**不是很贵,因为您只需为实际"更改"的文档付费,如此处所述。Cloud Firestore允许您收听查询结果,并在查询结果发生变化时获得实时更新。
当您收听查询结果时,每次新增或更新结果集中的文件时,您都会被收取读取费用。当文件因为变更而从结果集中移除时,您也会被收取读取费用。(相反地,当文件被删除时,您不会被收取读取费用。)