queryLimited 的 Firebase 查询有效性

Firebase query effectiveness with queryLimited

我想知道当前的主题,我知道一些 firebase 专家同行很快就会回复,这就是我在这里分享它的原因。

如果我查询一个child的数据,限制在last24,和我只查询最后一个,做2次的消耗量一样吗? (分页,一般我在想是不是应该一次查询更多的帖子来减少数据消耗还是一样)

例子 调用一次是不是一样

query.queryLimited(toLast: 2).observeSingleEvent

还是这两次?

query.queryLimited(toLast: 1).observeSingleEvent

仅从数据消耗的角度来看

just from the viewpoint of data consumption

一个简单的回答是,它实际上取决于对象的大小。

让我们举个简单的例子。假设我们有一个如下所示的用户节点:

Firebase-root
   |
   --- users
        |
        --- $uid
        |    |
        |    --- name: "Zash__"
        |
        --- $uid
             |
             --- name: "Alex Mamo"

如你所见,我的对象比你的大,因为我的名字包含 9 个字符,而你的只有 6 个字符.因此,为了这个示例,我们可以说您的对象大小为 6 个字节,而我的对象大小为 9 个字节。

因此,如果您使用以下查询:

query.queryLimited(toLast: 2).observeSingleEvent

将要下载的数据量为 (6 + 9) 15 字节。另一方面,如果您两次使用以下查询:

query.queryLimited(toLast: 1).observeSingleEvent

将要下载的数据量将为 (9 + 9) 18 字节,考虑到查询中的最后一个用户是我。

因此,您下载的数据量将始终取决于您正在下载的对象的大小。如果碰巧两个对象的大小 完全相同 ,则下载的数据量将相同。

如果你希望关心对象的大小,那么你应该考虑使用Cloud Firestore, where it doesn't matter the size of the documents. This means that if a document is 20 bytes in size and you read it or is 1 Mib (the maximum size),你总是要付出同样的代价, 这是单个文档读取。


P.S。很可能计算并不是完全按照这种方式进行的,但这只是一个理解概念的例子。