冗余快照侦听器和读取

时间:2021-03-19 10:02:25

标签: google-cloud-firestore

所以我很好奇冗余快照侦听器做了多少读取,无论是从性能角度还是定价角度。我需要决定是否将其包装在 Rxdart 的 PublishSubject 中以形成中间“缓存”层。

假设我有一个包含 10 个名为 mycol 的文档的集合,以及以下代码:

final sub1 = FirebaseFirestore.instance.collection('mycol').snapshots().listen((qs) {
   // ... do something with the snapshot data.
});

// A few minutes later (sub1 is still active):
final sub2 = FirebaseFirestore.instance.collection('mycol').snapshots().listen((qs) {
   // ... do something with the snapshot data.
});

以上会算作 20 次读取吗?

因为我想到了 docs 中的以下内容:

<块引用>

此外,如果侦听器断开连接超过 30 分钟(对于 例如,如果用户离线),您将被收取读取费用 如果您发出了全新的查询。

这暗示了对同一集合的冗余查询不为冗余读取收费,因为 SDK 很容易在活动侦听器之间共享该数据。但我从来没有真正理解那句话。

所以我的问题是:

  • 上面的例子做了多少次读取?
  • 我对报价的理解是否正确?

我可以以“比抱歉更安全”的方式使用 PublishSubject,但由于缺乏理解,我不喜欢编写冗余层。

1 个答案:

答案 0 :(得分:0)

我建议您使用 Firestore 中的一些可用指标来解决您的问题。您可以使用 Cloud Monitoring [1] 检查 Firestore 中可用的指标。​​

其中,使用指标 document/read_count 如果您可以将数据库与其他用户隔离,您应该能够回答您的问题,以便能够确定有多少读取是由并避免计算其他读取。

[2] 中有关于监控 Cloud Firestore 活动的更多信息。

[1] https://cloud.google.com/monitoring/api/metrics_gcp#gcp-firestore

[2] https://firebase.google.com/docs/firestore/monitor-usage