You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore Bundles是否比常规查询成本更高?

Firestore查询与数据包的获取成本差异案例研究
  • Firestore查询(Firestore Queries)
  • Firestore数据包(Firestore Bundles)

Firestore数据包是Firestore推出的预打包数据功能,可将指定查询结果提前打包存储,供客户端直接下载使用。


测试环境

某集合包含1282个文档,每个文档包含6个属性:

  • subject_name:字符串(string)
  • subject_code:字符串(string)
  • date:时间戳(Timestamp)
  • last_updated:时间戳(Timestamp)
  • id:字符串(string)
  • course_count:数字(number)

1. Firestore查询成本计算

参考Firestore官方定价,以法兰克福(Europe-west3)区域为基准,忽略网络出站数据传输成本:

  • 每100,000次文档读取费用为0.039美元

单用户读取1282个文档的成本:

  • 0.039 * (1282/100000) = 5e-4美元 或 0.0005美元

2. Firestore数据包成本计算

参考Firebase官方定价,计算时忽略构建数据包的初始1282次文档读取(该操作仅需执行一次,后续用户获取数据包无需额外查询读取成本)。用户从Firebase云存储下载数据包,仅需承担带宽成本:

  • 每下载1GB数据费用为0.12美元
  • 包含1282个文档的数据包大小为1MB

单用户下载1MB数据包的成本:

  • 0.12 * (1/1024) ≈ 1.2e-4美元 或 0.00012美元

结论

使用数据包的成本约为直接查询的24%,比直接查询低4倍:

  • (1.2 / 5) * 100 = 24%

注意要点

  1. 本次测试使用的文档尺寸极小,无长文本内容。若文档尺寸较大,数据包的下载成本会随之增加,但查询成本保持不变,因此不建议对大文档使用数据包,否则成本反而更高。
  2. Firestore文档中的数字固定占用8字节,但数据包为文本文件,大数字会占用更多存储空间。
  3. 复杂度:需要实现Firebase云函数,按计划或集合更新时生成新数据包;集合中的变更无法同步到旧数据包,必须重新查询生成新包。
  4. 安全性:可通过Firestore规则锁定集合,仅允许通过云函数构建的数据包访问数据;且无需推送客户端更新即可动态调整查询内容。
  5. 成本优化:若使用比法兰克福(Europe 3 (eur3),每10万次读取0.06美元)更昂贵的区域服务器,使用数据包的成本节省会更显著。
  6. 灵活性:单个数据包可整合多个不同查询的结果,比如来自不同集合的文档;下载到客户端后,Firebase SDK会自动将文档分配到对应位置,可通过设备缓存进行查询获取。
  7. 混合使用方案:可通过定时云函数每24小时生成一次数据包;用户刷新时,直接从Firestore查询last_updated属性大于数据包中最大last_updated值的文档,实现增量更新。
  8. 理想场景:根据测试结果,大量小文档的场景下使用数据包能最大程度降低成本。

内容的提问来源于stack exchange,提问作者Khaled Sh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:24:55