了解即時資料庫計費

Firebase 對您儲存在資料庫中的資料以及 OSI 模型會話層(第 5 層)的所有出站網路流量進行計費。儲存費用為每 GB/月 5 美元,每天評估。計費不受資料庫位置的影響。出站流量包括所有資料庫操作的連接和加密開銷以及透過資料庫讀取下載的資料。資料庫讀取和寫入都會導致您的帳單上產生連接費用。所有進出資料庫的流量(包括安全規則拒絕的操作)都會產生計費成本。

計費流量的一些常見範例包括:

  • 下載的資料:當客戶端從您的資料庫取得資料時,Firebase 會對下載的資料收費。通常,這佔了頻寬成本的大部分,但它並不是帳單中的唯一因素。
  • 協定開銷:伺服器和用戶端之間需要一些額外的流量才能建立和維護會話。根據底層協議,此流量可能包括:Firebase 即時資料庫的即時協定開銷、WebSocket 開銷和 HTTP 標頭開銷。每次建立連線時,此開銷與任何 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 加密成本。
  • 檢查錯誤:如果您的頻寬成本出乎意料地高,請驗證您的應用程式是否同步了比您最初預期更多的資料或同步頻率。若要找出問題,請使用分析器工具來測量讀取操作並在AndroidObjective-CWeb SDK 中開啟偵錯日誌記錄。檢查應用程式中的背景和同步進程,以確保一切都按您的預期運行。
  • 減少連線:如果可能,請嘗試優化連線頻寬。頻繁的小型 REST 請求可能比使用本機 SDK 的單一連續連線的成本更高。如果您確實使用 REST API,請考慮使用 HTTP keep-alive 或伺服器發送事件,這可以降低 SSL 握手的成本。
  • 使用 TLS 會話票證:透過頒發TLS 會話票證來減少恢復連線時的 SSL 加密開銷成本。如果您確實需要頻繁、安全地連接到資料庫,這尤其有用。
  • 索引查詢:對資料建立索引可以減少用於查詢的總頻寬,這具有降低成本和提高資料庫效能的雙重好處。使用探查器工具尋找資料庫中未索引的查詢
  • 最佳化您的偵聽器:新增查詢以限制偵聽操作傳回的數據,並使用僅下載資料更新的偵聽器 - 例如, on()而不是once() 。此外,將聽眾放置在盡可能遠的位置,以限制他們同步的資料量。
  • 降低儲存成本:執行定期清理作業並減少資料庫中的任何重複資料。
  • 使用規則:防止對資料庫進行任何可能代價高昂的未經授權的操作。例如,使用 Firebase 即時資料庫安全性規則可以避免惡意使用者重複下載整個資料庫的情況。詳細了解如何使用 Firebase 即時資料庫規則

適用於您的應用程式的最佳最佳化計劃取決於您的特定用例。雖然這不是最佳實踐的詳盡列表,但您可以在我們的Slack 頻道Stack Overflow上找到更多來自 Firebase 專家的建議和技巧。