【问题标题】:Decrease firestore reads减少 Firestore 读取
【发布时间】:2021-04-04 15:35:30
【问题描述】:
我在我的 android 应用程序中使用 firebase。所有数据都存储在 Firestore 文档中。主页上会显示各种汽车公司的名称,如果用户点击一个公司,则会显示型号名称,最后显示有关该汽车的信息。该应用程序仍在开发中,每天的文档阅读量约为 250 次。我无法弄清楚为什么会这样。在实时数据库中拥有公司及其型号名称以及在 Firestore 文档中有关该特定汽车的信息是一个好主意吗?例如。 (请忽略语法)db.collections("Ferrari").document("458").getResults()
这种查询算作 1 个文档读取吗?我可以通过这种方式减少阅读的文档吗?
【问题讨论】:
标签:
android
firebase
firebase-realtime-database
google-cloud-platform
google-cloud-firestore
【解决方案1】:
对于文档
阅读费用有一些细微差别,您应该牢记。这
以下部分详细解释了这些细微差别。
收听查询结果
Cloud Firestore 允许您收听查询结果并获取
查询结果变化时实时更新。
当您收听查询结果时,您需要为阅读付费
每次添加或更新结果集中的文档时。你是
当从结果集中删除文档时,还收取读取费用
因为文件变了。 (相反,当一个文档是
已删除,您无需为阅读付费。)
此外,如果监听器断开连接超过 30 分钟(对于
例如,如果用户离线),您将被收取阅读费用
如果您发出了全新的查询。
管理大型结果集
Cloud Firestore 具有多项功能,可帮助您管理以下查询:
返回大量结果:
游标,可让您恢复长时间运行的查询。页面令牌,
这可以帮助您对查询结果进行分页。限制,它指定如何
许多结果要检索。偏移量,允许您跳过固定的
文件数。
使用游标、页面标记和
限制。其实这些功能可以帮你省钱
只有您真正需要的文件。
但是,当您发送包含偏移量的查询时,您将
为每个跳过的文档收取阅读费用。例如,如果您的查询
使用偏移量 10,查询返回 1 个文档,您是
11次读取收费。由于这个额外的费用,你应该使用
尽可能使用游标而不是偏移量。
文档读取以外的查询
对于文档读取以外的查询,例如对列表的请求
集合 ID,您需要为读取的一份文档付费。如果取
完整的结果集需要多个请求(例如,
如果您使用的是分页),则每次请求都会向您收费一次。
如果我们提出您的问题。
这个例子展示了如何使用get()获取一个单个文档的内容
db.collections("Ferrari").document("458").get() // One Document One Read :)
注意:对于您执行的每个查询,即使查询未返回任何结果,也需要读取一个文档的最低费用。