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

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

常見的計費流量範例如下:

  • 下載的資料:當用戶端從資料庫取得資料時,Firebase 會針對下載的資料收取費用。這通常佔了大量頻寬費用,但並不是帳單的唯一因素。
  • 通訊協定負荷:伺服器和用戶端之間必須加入一些額外的流量,才能建立並維護工作階段。視基礎通訊協定而定,這類流量可能包括:Firebase 即時資料庫的即時通訊協定負載、WebSocket 負擔和 HTTP 標頭負擔。每次建立連線時,這個負擔與任何 SSL 加密負擔都會產生連線費用。雖然在單一要求中,這個頻寬可節省大量頻寬,但如果您的酬載很小,或您頻繁執行短連線,這就可能是帳單的重要環節。
  • SSL 加密負擔:安全連線必要的 SSL 加密負擔需要相關費用。以初始握手來說,這個費用平均約為 3.5 KB,每則外送訊息的 TLS 記錄標頭費用平均約為數十位元組。對大多數應用程式來說,這個費用佔帳單的一小部分。但是,如果特定案例需要大量的 SSL 握手,這可能會變得很高。例如,不支援傳輸層安全標準 (TLS) 工作階段票證的裝置可能需要大量的 SSL 連線握手。
  • Firebase 主控台資料:雖然這通常不會耗用大量即時資料庫費用,但 Firebase 對您從 Firebase 主控台讀取及寫入的資料會產生費用。

估算計費用量

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

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

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

最佳化用量

您可以採用下列幾種最佳做法來最佳化資料庫用量和頻寬費用。

  • 使用原生 SDK:請盡可能使用與應用程式平台對應的 SDK,不要使用 REST API。SDK 會維護開放式連線,降低通常與 REST API 搭配使用的 SSL 加密成本。
  • 檢查錯誤:如果頻寬費用超出預期,請確認應用程式同步處理資料或同步處理的頻率不超出您的預期。如要找出問題,請使用分析器工具測量讀取作業,並在 AndroidObjective-C網頁 SDK 中開啟偵錯記錄功能。檢查應用程式的背景和同步處理程序,確保一切運作正常。
  • 減少連線:盡可能嘗試最佳化連線頻寬。相較於使用原生 SDK 的單一連續連線,小型 REST 要求的成本可能會比較高。如果您使用 REST API,請考慮使用 HTTP 保持運作或伺服器階段事件,可降低 SSL 握手的成本。
  • 使用傳輸層安全標準 (TLS) 工作階段票證:發出 TLS 工作階段票證,降低重新啟用連線的 SSL 加密負擔費用。如果您需要頻繁而安全的資料庫連線,這個做法會特別實用。
  • 索引查詢: 為資料建立索引可減少查詢的總頻寬,因此在降低成本並提高資料庫效能的雙倍優勢。使用分析器工具,在資料庫中尋找未建立索引的查詢
  • 最佳化事件監聽器:新增查詢來限制監聽作業傳回的資料,並使用只下載資料更新的事件監聽器,例如 on(),而非 once()。此外,請將事件監聽器放在路徑較下方,以便限制其同步處理的資料量。
  • 降低儲存費用:定期執行清理工作,並減少資料庫中的任何重複資料,
  • 使用規則:防止資料庫發生任何可能費用高昂且未經授權的作業。例如,使用 Firebase 即時資料庫安全性規則可避免惡意使用者重複下載整個資料庫的情況。進一步瞭解如何使用 Firebase 即時資料庫規則

根據您的特定用途,最適合的應用程式最佳化計畫會有所不同。本清單僅列出部分最佳做法,但您可以在 Slack 頻道Stack Overflow 上,查閱 Firebase 專家提供的更多建議和提示。