Firebase billing account 中多个 BLAZE 项目的免费读取额度
结论
两个项目共用同一个 billing account,并不会将读取次数合并成 80,000 次,再统一扣除一份免费额度。
Cloud Firestore 的每日免费读取额度按 Firebase/Google Cloud 项目计算,不按 billing account 计算。假设:
- 项目 1 当天有 40,000 次计费读取;
- 项目 2 当天有 40,000 次计费读取;
- 两个项目使用的 Firestore 数据库均具备免费额度;
- 每个项目当天的其他读取量没有使总量超过免费额度。
在这种情况下,两个项目都没有超过各自每天 50,000 次文档读取的免费额度,因此这 80,000 次读取通常不会产生 Firestore 文档读取费用。
计算方式
两个项目的读取量需要分别计算:
项目 1:max(40,000 - 50,000, 0) = 0 次收费读取
项目 2:max(40,000 - 50,000, 0) = 0 次收费读取
合计收费读取:0 + 0 = 0
如果项目 1 读取 60,000 次,项目 2 读取 40,000 次,计算结果如下:
项目 1:max(60,000 - 50,000, 0) = 10,000 次收费读取
项目 2:max(40,000 - 50,000, 0) = 0 次收费读取
合计收费读取:10,000 次
这里的 50,000 次指“每天最多 50,000 次免费文档读取”,并非只有严格少于 50,000 次才免费。
为什么 billing account 不会合并免费额度
billing account 用于汇总和支付关联项目产生的费用。账单可以同时显示多个项目的费用,但不代表这些项目共用一份 Firestore 免费额度。
两者的作用可以这样理解:
- 项目:统计 Firestore 使用量,并应用该项目的免费额度;
- billing account:汇总各项目扣除免费额度后产生的实际费用。
Blaze plan 按实际使用量计费,但 Firestore 适用的免费用量仍会先从对应项目的使用量中扣除。
如何核对实际费用
核对时应分别查看两个项目,不要只看 billing account 的总使用量:
- 在 Firebase Console 中切换到项目 1。
- 打开 Firestore 的 Usage 或用量页面。
- 查看当天的 document reads。
- 切换到项目 2,并重复上述操作。
- 在 Google Cloud Billing 报表中按
Project分组,确认费用来自哪个项目。 - 如需进一步区分,可在账单报表中同时按服务和 SKU 筛选 Cloud Firestore 读取费用。
也可以使用下面的 JavaScript 逻辑,估算每个项目超过免费额度的读取量:
const FREE_READS_PER_PROJECT_PER_DAY = 50_000;
function calculateBillableReads(reads) {
return Math.max(reads - FREE_READS_PER_PROJECT_PER_DAY, 0);
}
const project1Reads = 40_000;
const project2Reads = 40_000;
const project1Billable = calculateBillableReads(project1Reads);
const project2Billable = calculateBillableReads(project2Reads);
console.log({
project1Billable,
project2Billable,
totalBillable: project1Billable + project2Billable,
});
输出为:
{
project1Billable: 0,
project2Billable: 0,
totalBillable: 0
}
这段代码仅用于估算。最终计费用量以 Google Cloud Billing 和 Firestore 的用量统计为准。
注意事项
读取次数不一定等于业务代码执行次数
一次查询可能产生多次计费读取。实时监听器重新连接、查询结果更新、事务重试、安全规则读取其他文档,以及部分查询涉及的索引条目读取,都可能增加实际计费用量。因此,业务代码执行了 40,000 次查询,不一定意味着账单只记录 40,000 次 document reads。
多个数据库需要单独确认免费额度资格
如果一个项目创建了多个 Firestore 数据库,不能直接认为每个数据库都有一份免费额度。通常,只有项目中符合条件的一套数据库用量可以享受免费配额,其他数据库可能从首次使用起便开始计费。遇到多数据库场景,应以当前 Firestore 定价规则和控制台显示为准。
每日额度有固定重置周期
Firestore 的每日免费配额按照平台规定的计费时区和周期重置,不一定与业务所在地的自然日完全一致。按中国时区统计“当天”用量时,统计结果可能与账单的每日边界不同。
其他 Firebase 服务可能仍会收费
文档读取量没有超过免费额度,不代表整个项目的账单一定为零。存储、网络出口、文档写入、文档删除、Cloud Functions 和 Cloud Storage 等资源都有各自的计费规则及免费额度。核对最终费用时,应按项目和 SKU 查看账单明细。
备注:内容仅供参考。
