计费示例
您可以使用这个真实的基本聊天应用示例来衡量 Firestore 使用量和费用。此为估算并不准确,但可以帮助您更好地了解如何对自己的 Firestore 使用量进行计费。
概览:按使用量级别划分费用
为了说明典型的费用案例,我们假设一个示例聊天应用,用户可以在此应用中发起与两位或多位参与者的聊天。用户可以在列表中查看他们的活跃聊天,阅读消息和发送消息。在此示例中,我们使用的是北美多区域(具体来说就是 nam5
)的价格。
前提
假设此应用的使用量和数据存储情况如下所示:
- 日活跃用户数 (DAU) 占应用安装总数的 10%。您可以使用日活跃用户数 (DAU) 的粗略估计值来估算您的每日费用。此数值对应的是某一天主动打开并使用应用的用户数,通常只占应用安装总数的一小部分。在下面的计算中,我们估计日活跃用户数为应用安装总数的 10%。
- 文档大小相对较小。如需了解按类型分列的文档大小统计,请参阅下表。
- 数据仅存储三个月。示例聊天应用中消息的存储时间仅为三个月。为了计入删除操作,下面的计算显示每个日写入操作对应一个日删除操作。
- 这些费用估算值反映了示例应用的大部分费用,但并非所有费用。我们通过计算本指南中述及的最常见用户任务的操作、用户和消息存储以及出站流量,考虑了应用的大部分费用。您可能还需要考虑其他费用,具体取决于您的应用结构和数据需求。此示例只为指导您如何计算费用,如需 Firestore 费用的更全面说明,请参阅价格页面。
如需了解按用户任务分列的操作统计,请参阅细分:按用户任务划分的计费使用量部分。
小型
(5 万次安装)
对于 5 万次应用安装(5000 位日活跃用户):$12.14/月
读/写操作费用 | |||||
---|---|---|---|---|---|
月费用总计 = $11.10/月 | |||||
日读取操作总计 40 万次 | = | 5 万次免费读取操作 +(35 万次读取操作,价格为 $0.06/10 万次) | = | 3.5 * $0.06 | |
$0.21 / 天 * 30 = $6.30 | |||||
日写入操作总计 10 万次 | = | 2 万次免费写入操作 +(8 万次写入操作,价格为 $0.18/10 万次) | = | .8 * $0.18 | |
$0.14 / 天 * 30 = $4.20 | |||||
日删除操作总计 10 万次 | = | 2 万次免费删除操作 +(8 万次删除操作,价格为 $0.02/10 万次) | = | .8 * $0.02 | |
$0.02 / 天 * 30 = $0.60 |
存储/网络费用 | |||||||
---|---|---|---|---|---|---|---|
月费用总计 = $1.04/月 | |||||||
20 KB / 日活用户的日出站流量 * 5000 位日活用户 | = | 100 MB 日出站流量 * 30 | = | 3 GB 月网络出站流量 | |||
3 GB 免费出站流量 = 免费1 | |||||||
15 KB 日消息存储 / 日活用户 + 3 KB 存储 / 安装2 | = | 45 KB 存储 / 日活用户 * 5000 位日活用户 | = | 225 MB 日存储 / 日活用户 * 30 | = | 6.75 GB 月存储空间使用量 | |
1GB 免费存储 + (5.75 * $0.18) = $1.04 / 月 |
1 Firestore 可每月免费使用 10GB 网络出站流量。
2 由于我们假设 DAU 占应用安装总次数的 10%,因此该数字就是已安装您的应用的用户总数。
中型
(100 万次安装)
对于 100 万次应用安装(10 万位日活跃用户):$292.02/月
读/写操作费用 | |||||
---|---|---|---|---|---|
月费用总计 = $261.90/月 | |||||
日读取操作总计 800 万次 | = | 5 万次免费读取操作 +(795 万次读取操作,价格为 $0.06/10 万次) | = | 79.5 * $0.06 | |
$4.77 / 天 * 30 = $143.10 | |||||
日写入操作总计 200 万次 | = | 2 万次免费写入操作 +(198 万次写入操作,价格为 $0.18/10 万次) | = | 19.8 * $0.18 | |
$3.56 / 天 * 30 = $106.80 | |||||
日删除操作总计 200 万次 | = | 2 万次免费删除操作 +(198 万次删除操作,价格为 $0.02/10 万次) | = | 19.8 * $0.02 | |
$0.40 / 天 * 30 = $12.00 |
存储/网络费用 | |||||||
---|---|---|---|---|---|---|---|
月费用总计 = $30.12/月 | |||||||
20 KB / 日活用户的日出站流量 * 10 万位日活用户 | = | 2 GB 日出站流量 * 30 | = | 60 GB 月网络出站流量 | |||
10 GB 免费出站流量 +(50 GB 出站流量 * $0.12/GB)= $6.00 / 月 | |||||||
15 KB 日消息存储 / 日活用户 + 3 KB 存储 / 安装1 | = | 45 KB 存储 / 日活用户 * 10 万位日活用户 | = | 4.5 GB 日存储 / 日活用户 * 30 | = | 135 GB 月存储空间使用量 | |
1 GB 免费存储 + (134 GB * $0.18/GB) = $24.12 / 月 |
1 由于我们假设日活用户占应用安装总次数的 10%,因此该数字就是已安装您的应用的用户总数。
大型
(1,000 万次安装)
对于 1000 万次应用安装(100 万位日活跃用户):$2951.52
读/写操作费用 | |||||
---|---|---|---|---|---|
月费用总计 = 总计:$2637.90/月 | |||||
日读取操作总计 8000 万次 | = | 5 万次免费读取操作 +(7995 万次读取操作,价格为 $0.06/10 万次) | = | 799.5 * $0.06 | |
$47.97 / 天 * 30 = $1439.10 | |||||
日写入操作总计 2000 万次 | = | 2 万次免费写入操作 +(1998 万次写入操作,价格为 $0.18/10 万次) | = | 199.8 * $0.18 | |
$35.96 / 天 * 30 = $1078.80 | |||||
日删除操作总计 2000 万次 | = | 2 万次免费删除操作 +(1998 万次删除操作,价格为 $0.02/10 万次) | = | 199.8 * $0.02 | |
$4.00 / 天 * 30 = $120.00 |
存储/网络费用 | |||||||
---|---|---|---|---|---|---|---|
月费用总计 = $313.62/月 | |||||||
20 KB / 日活用户(日出站流量) * 100 万位日活用户 | = | 20 GB 日出站流量 * 30 | = | 600 GB 月网络出站流量 | |||
10 GB 免费出站流量 +(590 GB 出站流量 * $0.12/GB)= $70.80 / 月 | |||||||
15 KB 日消息存储 / 日活用户 + 3 KB 存储 / 安装1 | = | 45 KB 存储 / 日活用户 * 100 万位日活用户 | = | 45 GB 日存储 / 日活用户 * 30 | = | 1350 GB 月存储空间使用量 | |
(1 GB 免费存储)+ (1349 GB * $0.18/GB) = $242.82 / 月 |
1 由于我们假设 DAU 占应用安装总次数的 10%,因此该数字就是已安装您的应用的用户总数。
Firestore 计费模式的一项优点就在于,您只需为实际使用量付费。因此,您的费用可能会随着 DAU 数量的变化而上下浮动。
细分:按用户任务划分的计费用量
以示例聊天应用为例,其数据结构如下:
users/{userId}
- 用户记录groups/{groupId}
- 两位或更多位用户之间的聊天messages/{messageId}
- 聊天中的每条消息。
数据存储
为了计算用于存储应用数据的存储费用,请使用以下文档大小假设:
数据收集 | 文档大小(传输中) | 文档大小(磁盘上)* |
---|---|---|
用户 | 1KB | 3KB |
groups | 0.5KB | 1.5KB |
消息 | 0.25KB | 0.75KB |
* 此文档大小计算包括消息字段的索引,但假定对消息内容停用索引。
为降低存储费用,该应用存储消息的最长时间也仅为三个月。
如需详细了解如何计算存储费用,请参阅了解存储空间使用量计算。
操作
用户在应用中通常完成以下常见任务:
- 查看聊天列表:用户打开应用主屏幕,并查看按最新发布的消息顺序排序的聊天列表(包括群聊和私聊)。
- 阅读聊天中的消息:用户从主屏幕选择聊天并阅读聊天中的最新消息。
- 向聊天发送消息:用户向聊天(群聊或私聊)发送消息。
该示例应用在 Firestore 中针对上述三个典型用户任务的估计操作总次数如下:
- 读取:(5 * 10) + (30) = 80 次读取 / 用户 / 天
- 写入:(10 * 2) = 20 次写入 / 用户 / 天
- 网络出站流量:(50 * 0.25 KB) + (30 * 0.25 KB) = 20 KB / 用户 / 天
- 存储:(20 * 0.75 KB) = 15 KB / 用户 / 天
按用户任务统计的总使用量
选择每项用户任务以查看应用中的操作、存储和网络费用的完整说明和细分。
查看聊天列表
该应用的主屏幕加载 25 条最新聊天,产生 25 次文档读取操作的费用。假设活跃用户每天打开应用 5 次,每个用户每天总共读取 125 次。但若采用更高效的查询(如以下示例中的查询)可以减少此负载。
在下面的示例中,我们使用应用存储的每个成功提取的时间戳将查询限制为新聊天:
db.collection('groups') .where('participants', 'array-contains', 'user123') .where('lastUpdated', '>', lastFetchTimestamp) .orderBy('lastUpdated', 'desc') .limit(25)
假设每次用户检查应用时平均有 10 条更新的聊天。此查询仅产生 10 次文档读取操作。
阅读聊天中的消息
用户从主屏幕点击进入聊天线程以查看最新的消息,在初始加载中加载 50 条最新消息。
假设典型用户每天执行此操作 5 次(每次打开主屏幕时执行一次),结果每个用户每天进行总共 250 次读取操作。我们也可以将查询限制为自上次提取时间以来的新消息:
db.collection('groups') .doc('group234') .collection('messages') .where('sentTime', '>', lastFetchTimestamp) .orderBy('sentTime', 'desc') .limit(50)
假设用户每天在所有聊天中获得大约 30 条消息。由于您已将查询限制为提取新消息,因此每天仅检索 30 条消息。
向聊天发送消息
用户可以在聊天时向其他参与者发送消息。假设活跃用户每天发送大约 10 条消息。
每条发送的消息将导致两次文档写入操作:一次写入该聊天的 messages
子集合,一次写入该聊天的父级文档以更新 lastUpdated
时间戳和其他元数据。
请注意,读取这些消息的费用已在其他历程中计算,因此以下总计仅考虑此写入费用。
管理员任务的计费使用量
作为应用所有者或管理员,您可能需要基于应用数据生成报告。例如,您可能希望记录用户每天发送的消息数。为此,您可以对 messages
合集组进行 count()
聚合。
使用 count()
等聚合查询时,对于查询所匹配的每批索引条目(不超过 1,000 个),系统都会收取相当于一次文档读取的费用。运行这种每日聚合会增加以下月度费用:
小型
(5 万次安装)
5 万次应用安装(5,000 位日活跃用户):$0.0009/月
5,000 位活跃用户 * 每位用户 10 条新消息 = 每天 5 万新消息文档
算出的 5 万个文档 / 每次读取收费 1,000 次索引匹配 = 50 次读取
每天 50 次读取 * 30 天 = 每月 1,500 次读取
每月 1500 次读取 * .06/100,000 读取价格 = 每月 $0.0009
中型
(100 万次安装)
100 万次应用安装(10 万位日活跃用户):$0.018/月
10 万位活跃用户 * 每位用户 10 条新消息 = 每天 100 万新消息文档
算出的 100 万个文档 / 每次读取收费 1,000 次索引匹配 = 1,000 次读取
每天 1,000 次读取 * 30 天 = 每月 3 万次读取
每月 3 万次读取 * .06/100,000 读取价格 = 每月 $0.018
大型
(1,000 万次安装)
1,000 万次应用安装(100 万位日活跃用户):$0.18
100 万活跃用户 * 每位用户 10 条新消息 = 每天 1,000 万新消息文档
算出的 1,000 万个文档 / 每次读取费用 1,000 次索引匹配 = 1 万次读取
每天 1 万次读取 * 30 天 = 每月 30 万次读取
每月 30 万次读取 * .06/10,0000 读取价格 = 每月 $0.18