有关实时数据库中数据传输的一般问题

时间:2018-07-19 13:06:29

标签: firebase firebase-realtime-database

当我说“转移”时,我指的是可计费的转移数据,我相信这只是下载的数据。

让我们说您正在听ref('/posts/').onValue(),然后您打电话给ref('/posts').once(),因为客户端已经具有最新版本的客户端,因此Realtime Database知道不通过网络传输任何数据吗?数据?

现在,假设您正在收听ref('/posts/').onValue(),并且发现了新的更新。实时数据库是否传输增量或整个文档?

现在可以说您正在做ref('/posts/').orderByChild('timestamp').limitToLast(10)之类的过滤器,并且您的/posts/引用有500个条目。实时数据库会将10个孩子转移到客户端还是全部500个孩子?

现在可以说您在Realtime Database中注册了数千名侦听器,您是否需要为设置和删除侦听器付费?

注意:我不确定这是否应该是多个问题,或者是否不应该将其发布在Stack Overflow上。这就是堆栈新手的不确定性。

1 个答案:

答案 0 :(得分:1)

如果您同时将多个侦听器附加到一个位置,则该位置的数据将仅传输一次。

当您要监听的较大节点的一部分有更新时,Firebase会尝试仅通过网络发送增量。确切数据的大小取决于节点的总大小及其下的更新。

如果在查询的属性上有索引,则仅传输查询结果。如果您在该属性上没有索引,则Firebase客户端将记录错误,在该位置传输所有数据并过滤客户端。

请注意,有一些工具可以了解这些内容:

  1. 使用Firebase Database profiler了解有关读/写速度,带宽和未索引查询的更多信息。
  2. Enable debug logging或检查浏览器的“网络”选项卡,以查看客户端与数据库之间的确切线路通信。