Check out what’s new from Firebase at Google I/O 2022. Learn more

了解實時數據庫計費

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 保持活動或服務器發送事件,這可以降低 SSL 握手的成本。
  • 使用 TLS 會話票證:通過簽發TLS 會話票證來減少恢復連接的 SSL 加密開銷成本。如果您確實需要頻繁、安全地連接到數據庫,這將特別有用。
  • 索引查詢:對數據進行索引可減少用於查詢的總帶寬,這具有降低成本和提高數據庫性能的雙重好處。使用分析器工具在數據庫中查找未索引的查詢
  • 優化您的偵聽器:添加查詢以限制您的偵聽操作返回的數據,並使用僅下載數據更新的偵聽器 - 例如, on()而不是once() 。此外,將您的偵聽器放置在盡可能遠的位置,以限制它們同步的數據量。
  • 降低存儲成本:運行定期清理作業並減少數據庫中的任何重複數據。
  • 使用規則:防止對數據庫進行任何可能代價高昂的未經授權的操作。例如,使用 Firebase 實時數據庫規則可以避免惡意用戶重複下載您的整個數據庫的情況。詳細了解如何使用 Firebase 實時數據庫規則

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