firestore中onSnapshot的性能成本是多少?

时间:2018-05-02 08:42:25

标签: firebase google-cloud-firestore

我正在设计一个包含(很多)文档的应用程序,这些文档与(可能很多)组共享。

我需要了解如何将文档更改从服务器推送到客户端以构建我的数据模型。

  1. 是否所有对数据库的更改都推送到客户端(使用最少的数据),客户端下载已注册onSnapshot的内容?
  2. 远程服务器上是否有更新过滤器,只有相关数据被推送到客户端?
  3. 在模型(1)中,添加许多onSnapshot(每个文档一个)的成本似乎很低。在模型(2)中,它可能很高,但它是服务器的负担?所有这些与火焰库定价模型(读取计数)有何关联。

    感谢此灯上的任何灯光......

1 个答案:

答案 0 :(得分:0)

实际上,答案在code

/**
 * A PersistentStream that implements the Listen RPC.
 *
 * Once the Listen stream has called the openHandler, any number of listen and
 * unlisten calls calls can be sent to control what changes will be sent from
 * the server for ListenResponses.
 */
export class PersistentListenStream extends PersistentStream< // ...

当我们创建onSnapshot时,查询将被发送到服务器,该服务器会记住客户端感兴趣的内容并更新它的通知过滤器。

这意味着我们处于场景#2中,它解释了服务器打开连接的成本。

这也意味着我们不关心我们创造了多少onSnapshot。关于客户端,为我们获得的每个文档执行一个onSnapshot没有性能问题(但Firestore中有Read cost)。