瞭解即時資料庫計費方式

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 會顯示下列指標的用量統計資料:

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

最佳化用量

您可以採用一些最佳做法,盡可能降低資料庫使用量和頻寬成本。

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

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