全新推出 Cloud Firestore(测试版):试用 Firebase 和 Google Cloud Platform 全新推出的规模可扩展且灵活的数据库。详细了解 Cloud Firestore

了解实时数据库帐单

Firebase 帐单中列出的计费对象包括您存储在数据库中的数据以及在 OSI 模型会话层(第 5 层)的所有出站网络流量。存储费用为 $5/GB/月,每天估算一次。出站流量包括所有数据库操作产生的连接开销和加密开销,以及通过数据库读取操作下载的数据。数据库读取和写入都可能在帐单上产生连接费用。进出数据库的所有流量(包括被安全规则拒绝的操作)都会产生可计费的费用。

以下是计费流量的一些常见示例:

  • 下载的数据:当客户端从您的数据库获取数据时,Firebase 会针对下载的数据收费。这部分费用通常占到了带宽费用的大部分,但并不是产生帐单费用的唯一因素。
  • 协议开销:在服务器与客户端之间建立和维护会话需要一些额外的流量。根据底层协议,这部分流量可能包括:Firebase 实时数据库的实时协议开销、WebSocket 开销和 HTTP 标头开销。每次建立连接时,这部分开销与所有 SSL 加密开销会一起产生连接费用。尽管单个请求占用的带宽不大,但如果您的数据负载很小或者您频繁地进行短时连接,那么这部分开销产生的费用就可能占到您帐单费用的很大一部分。
  • SSL 加密开销:要实现安全连接,需要进行 SSL 加密,而 SSL 加密开销也会产生相应的费用。平均来讲,初始握手的开销大约为 3.5KB,每条传出讯息的 TLS 记录标头大约为几十个字节。对于大多数应用来说,这部分费用只占帐单的一小部分。但是,如果您的具体使用情形需要大量的 SSL 握手,这部分费用所占的比例可能会较高。例如,不支持 TLS 会话票证的设备可能需要大量的 SSL 连接握手。
  • Firebase 控制台数据:虽然这部分数据产生的费用通常不会是实时数据库费用的大头,但 Firebase 会对从 Firebase 控制台读取和向其中写入的数据收取费用。

估算计费的数据使用量

要查看当前的实时数据库使用情况并估算帐单金额,请查看 Firebase 控制台中的使用情况标签。您可以查看当前结算周期、过去 30 天或过去 24 小时的使用情况。

Firebase 会显示以下指标的使用情况统计信息:

  • 连接数:同时与您的数据库通信的、当前处于打开状态的实时连接数。这包括以下实时连接:WebSocket、长轮询和 HTML 服务器发送的事件,但不包括 RESTful 请求。
  • 存储量:您的数据库中存储的数据量。这不包括 Firebase 托管或通过其他 Firebase 产品存储的数据。
  • 下载量:从您的数据库下载的所有字节,包括协议和加密开销。
  • 负载:此图显示了在给定的 1 分钟间隔内,数据库在处理请求时所耗费的计算能力。当数据库负载接近 100% 时,就可能会出现性能问题。

优化数据用量

您可以采取一些最佳做法来优化数据库用量,节省带宽费用。

  • 使用原生 SDK:尽可能使用与应用对应的平台相适应的 SDK,而不是 REST API。SDK 可使连接保持打开状态,从而减少通常会因使用 REST API 而产生的 SSL 加密费用。
  • 检查是否存在错误:如果您的带宽费用高得异乎寻常,请核实您的应用同步数据的量或频率是否超出了原本的预期。要找出问题根源,可使用分析器工具来衡量您的读取操作,并在 Android SDK、iOS SDK 和网页 SDK 中开启调试日志记录功能。检查您的应用中的后台和同步进程,确保一切符合预期。
  • 减少连接数:如果可能,尝试优化连接带宽。频繁、小负载的 REST 请求可能比使用原生 SDK 的单个持续连接产生更高的费用。如果您使用 REST API,不妨考虑使用 HTTP 持久连接或服务器发送的事件,这样有助于降低 SSL 握手产生的费用。
  • 使用 TLS 会话票证:通过签发 TLS 会话票证来减少恢复连接时 SSL 加密开销所产生的费用。此方法特别适合需要频繁、安全地连接到数据库的情况。
  • 将查询编入索引将数据编入索引可减少查询所用的总带宽,这样既有助于降低费用,又能提高数据库性能,一举两得。您可使用分析器工具在数据库中找出未编入索引的查询
  • 优化侦听器:添加查询以限制您的侦听操作返回的数据,并使用仅下载数据更新的侦听器。例如,使用 on() 而不是 once()。另外,将您的侦听器部署在路径中尽可能深的地方,以限制它们同步的数据量。
  • 降低存储费用:运行定期清理作业并减少数据库中的重复数据。
  • 使用规则:阻止可能在数据库上出现的任何高费用的未授权操作。例如,使用 Firebase 实时数据库规则可以避免恶意用户反复下载整个数据库的情况。详细了解如何使用 Firebase 实时数据库规则

适合您的应用的最佳优化方案取决于具体的使用情形。上文并未列出所有的最佳做法,您可以在我们的 Slack 频道Stack Overflow 上找到 Firebase 专家提供的更多建议和提示。

发送以下问题的反馈:

此网页
Firebase 实时数据库
需要帮助?请访问我们的支持页面