瞭解即時資料庫的計費方式

如果專案採用免付費 Spark 定價方案,則不需支付 Realtime Database 的使用費。您可免付費使用 1 GB 的資料儲存庫,以及每月 10 GB 的資料下載量。

如果升級至即付即用 Blaze 定價方案,則可繼續享有免付費用量 (1 GB 資料儲存庫和每月 10 GB 資料下載量),超出部分則須付費。如果專案採用 Blaze 定價方案,建議您為專案設定預算快訊。

本頁其餘部分會詳細說明計費方式。

Realtime Database 的計費方式

Firebase 會根據您在資料庫中儲存的資料,以及 OSI 模型工作階段層 (第 5 層) 的所有傳出網路流量,向您收取費用。儲存空間費用為每月每 GB $5 美元,每日評估。計費方式不受資料庫位置影響。傳出流量包含所有資料庫作業的連線和加密負擔,以及透過資料庫讀取作業下載的資料。資料庫讀取和寫入作業都可能產生連線費用。所有進出資料庫的流量 (包括遭安全性規則拒絕的操作) 都會產生可結算費用。

以下是一些常見的計費流量示例:

  • 下載的資料:用戶端從資料庫取得資料時,Firebase 會針對下載的資料收費。一般來說,這會占頻寬費用的絕大部分,但並非帳單中的唯一因素。
  • 通訊協定負擔:伺服器和用戶端之間需要一些額外流量,才能建立及維護工作階段。視基礎通訊協定而定,這類流量可能包括:Firebase 即時資料庫的即時通訊協定負擔、WebSocket 負擔和 HTTP 標頭負擔。每次建立連線時,這項負擔加上任何 SSL 加密負擔,都會增加連線成本。雖然單一要求的頻寬不大,但如果酬載很小,或您經常進行短暫連線,這可能會占帳單的一大部分。
  • SSL 加密負擔:安全連線所需的 SSL 加密負擔會產生費用。平均而言,初始交握的成本約為 3.5 KB,每封送出的訊息的 TLS 記錄標頭則約為數十個位元組。對大多數應用程式來說,這筆費用只占帳單金額的一小部分。不過,如果您的特定案例需要大量 SSL 握手,這個比例可能會大幅增加。舉例來說,不支援 TLS 工作階段票證的裝置可能需要大量 SSL 連線交握。
  • Firebase 控制台資料:雖然這通常不是 Realtime Database 費用的主要部分,但 Firebase 會針對您在 Firebase 控制台中讀取和寫入的資料收取費用。

預估計費用量

如要查看目前的 Realtime Database 連線和資料用量,請前往 Firebase 控制台的「Usage」(用量) 分頁。您可以查看目前帳單週期、過去 30 天或過去 24 小時內的用量。

Firebase 會顯示下列指標的使用統計資料:

  • 連線:目前同時開啟的資料庫即時連線數量。包括 WebSocket、長輪詢和 HTML 伺服器傳送事件等即時連線。不含 RESTful 要求。
  • 儲存空間:資料庫中儲存的資料量。不含 Firebase 託管或透過其他 Firebase 產品儲存的資料。
  • 下載量:從資料庫下載的所有位元組,包括通訊協定和加密負荷。
  • 負載:這張圖表顯示在指定的 1 分鐘間隔內,資料庫有多少部分正在使用、處理要求。資料庫接近 100% 時,可能會有效能問題。

最佳化用量

您可以採用幾項最佳做法,盡可能提高資料庫用量和頻寬成本效益。

  • 使用原生 SDK:請盡可能使用與應用程式平台對應的 SDK,而非 REST API。SDK 會維持開放連線,降低通常會隨著 REST API 增加的 SSL 加密成本。
  • 檢查錯誤:如果頻寬費用異常偏高,請確認應用程式同步處理的資料量或頻率是否超出原先預期。如要找出問題,請使用分析器工具評估讀取作業,並在 Android、Objective-C 和 Web SDK 中啟用偵錯記錄檔功能。檢查應用程式中的背景和同步處理程序,確保一切運作正常。
  • 減少連線:盡可能最佳化連線頻寬。頻繁的小型 REST 要求可能比使用原生 SDK 的單一持續連線更昂貴。如果使用 REST API,建議採用 HTTP 持續連線或伺服器傳送事件,減少 SSL 握手產生的費用。
  • 使用 TLS 工作階段票證:核發 TLS 工作階段票證,降低恢復連線時的 SSL 加密負擔。如果您需要頻繁、安全地連線至資料庫,這項功能特別實用。
  • 索引查詢: 為資料建立索引可減少查詢使用的總頻寬,不僅能降低成本,還能提升資料庫效能。使用分析器工具找出資料庫中未建立索引的查詢。
  • 最佳化事件監聽器:新增查詢,限制監聽作業傳回的資料,並使用只下載資料更新的事件監聽器,例如 on(),而非 once()。此外,請盡可能將監聽器放在路徑的末端,限制同步的資料量。
  • 降低儲存空間成本:定期執行清理工作,減少資料庫中的重複資料。
  • 使用規則:防止資料庫發生任何可能造成高昂費用的未授權作業。舉例來說,使用 Firebase Realtime Database Security Rules 可避免惡意使用者重複下載整個資料庫。進一步瞭解如何使用 Firebase 即時資料庫規則。

最適合您應用程式的最佳化方案取決於您的特定用途。雖然這份清單並未列出所有最佳做法,但您可以在我們的 Slack 頻道或 Stack Overflow 上,找到 Firebase 專家的更多建議和提示。