有多少客户端连接到我的 Firestore?

How many clients are connected to my firestore?

我正在开发一个 flutter 应用程序,它从 firestore 中获取 341 个文档,经过 2 天的分析,我发现我的读取请求增加了太多。所以我在 stackdriver metrics explorer 上制作了一张图表,从中我了解到我的应用程序一次只读取 341 个文档,是 firebase 控制台增加了我的读取量。

现在,来谈谈困扰我的问题是什么,


1)当我们在控制台上看到数据时,如何考虑读取以及如何减少读取请求?基本上有 341 个文档,但每当我刷新控制台时它显示超过 600 个读取。


2)如图所示,有document reads'LOOKUP'和'QUERY'两种类型,它们之间的具体区别是什么?


3) 我正在使用单个实例从 firestore 获取数据,当我打开我的应用程序时,图表显示 1 个活动客户端 这很酷,但在接下来的 5 分钟内,活跃客户数量开始增加。

任何人都可以向我解释为什么会这样吗?
对于最后一个问题,我尝试禁用所有服务帐户,然后再次打开我的应用程序,但又出现了同样的问题。

 Firestore.instance.collection("Lectures").snapshots(includeMetadataChanges: true).listen((d){
  print(d.metadata.isFromCache);//prints false everytime 
  print(d.documents.length);// 341 
  print(d.documentChanges.length);//341 
});

这是我正在使用的片段。当应用程序启动时,它只运行一次。

我会尽量回答你的问题:

How reads are considered when we see data on the console and how can I reduce my read requests? Basically there are 341 docs but it is showing more than 600 reads whenever I refresh my console.

除了从控制台访问此数据库之外,还根据您查询 Firestore 数据库的方式来考虑读取,因此使用 Firebase 控制台将导致读取,即使您让控制台保持打开状态以执行其他操作,当数据库发生新的更改时,这些更改也会导致读取,automatically.and 从服务器读取的任何文档都将被计费。读取来自哪里并不重要。控制台应该包含在其中。

检查这个official documentation under the "Manage data"标题你可以看到有一个注释:"Note: Read, write, and delete operations performed in the console count towards your Cloud Firestore usage."

说如果你觉得这方面有问题,可以直接联系Firebase support得到更详细的解答

但是,如果您查看 free plan of Firebase,您会发现您每天有 5 万次免费阅读。

我为此找到的解决方法(感谢 Dependar Sethi)

  1. 为 Firestore 页面的“使用”选项卡添加书签。 (所以你基本上 'Skip' 数据选项卡)
  2. 以某种方式添加虚拟 collection 以确保它是 第一个 collection(按字母顺序)默认加载 Firestore 页面。

你可以找到他的完整解决方案here

此外,您可以优化查询,但是您只想使用 where() method and pagination with Firebase

检索所需的数据

As you can see in the picture there are two types of document reads 'LOOKUP' and 'QUERY', what's the exact difference between them?

我想它们之间没有重要区别,但是 "QUERY" 获取实际数据(当您调用 data() 方法时),而 "LOOKUP" 获取这些数据的引用(不调用数据()方法)。

I am getting data from the firestore with a single instance and when I open my app the chart shows 1 active client which is cool but in the next 5 minutes, the number of active clients starts to increase.

对于这个问题,考虑到您在 Stackdriver 中选择的指标,我可以看到 3 个连接的客户端。根据 decription of "connected client" 指标:

活动连接数。每个移动客户端将有一个连接。 admin SDK 中的每个监听器都是一个连接。每 60 秒采样一次。采样后,最多 240 秒内数据不可见。

所以请检查:有多少手机连接到此实例以及您的应用程序中有多少侦听器。所有这些的总和就是您在 Stackdriver 中看到的已连接客户端的实际数量。