目前有什么方法可以查看 Firestore 读取数据的来源吗?
我有几个应用程序和许多后台+几个预定的云功能,如果我不知道读取来自哪里,尝试调整这些以减少读取将是一项艰巨的任务。
即使我可以在前端和管理 SDK 之间拆分读取,这将有助于缩小范围。
我使用过的所有 SQL 数据库都有某种分析器来查看正在运行哪些查询以及它们需要多长时间。 我不介意在运行分析时增加 Firestore 使用量,因为从长远来看,这会节省我的使用量。
我在前端使用 Angular 和 AngularFire。
编辑:
我的一个想法是使用谷歌分析通过使用每个查询的事件来跟踪读取情况。 一旦我尝试过,我会更新这个问题。
目前有什么方法可以查看 Firestore 读取数据的来源吗?
不可以,目前您只能在控制台中获取所有读写操作的摘要。 它不会因起源或原因而崩溃。 这是你必须以某种方式为自己记录下来的东西。
请记住,Firebase 控制台本身需要读取操作。 另请参阅:Firestore - 意外读取
我最近在 Firestore 上遇到了类似的情况。对我来说网络智能解决了找出谁是重度读者的问题。
自本文发布以来,Firestore 添加了审核日志记录(2021 年末),它允许您跟踪后端的文档读取并使用 BigQuery 分析该数据。
例如,我可以使用以下查询获取每个用户每天的文档阅读次数:
SELECT
JSON_VALUE(proto_payload.audit_log.authentication_info.third_party_principal.payload.user_id) as uid,
TIMESTAMP_TRUNC(timestamp, DAY) as day,
SUM(proto_payload.audit_log.num_response_items) as read_count
FROM `nanochat-20241022-mw8qu9.global._Default._AllLogs`
WHERE proto_payload.audit_log.authorization_info[0].permission_type IN ('DATA_READ', 'DATA_WRITE')
AND proto_payload.audit_log.method_name LIKE 'google.firestore.v1.Firestore%'
GROUP BY
JSON_VALUE(proto_payload.audit_log.authentication_info.third_party_principal.payload.user_id),
TIMESTAMP_TRUNC(timestamp, DAY)
我写了一篇关于此问题的文章,并在此处提供了更多示例:计算 Firestore 中每个用户的文档读取量