瞭解即時資料庫計費方式

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 控制台中的「用量」分頁。您可以查看目前帳單週期、過去 30 天或過去 24 小時的用量。

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

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

最佳化用量

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

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

應用程式的最佳最佳化計畫取決於您的特定用途。雖然這份清單並未列出所有最佳做法,但您可以在 Slack 管道Stack Overflow 上,向 Firebase 專家尋求更多建議和訣竅。