所以我很好奇冗余快照侦听器做了多少读取,无论是从性能角度还是定价角度。我需要决定是否将其包装在 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
,但由于缺乏理解,我不喜欢编写冗余层。
答案 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