了解實時數據庫計費

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 中打開調試日誌記錄。檢查應用程序中的後台和同步進程,以確保一切都按預期進行。
  • 減少連接:如果可能,請嘗試優化連接帶寬。與使用本機 SDK 的單個連續連接相比,頻繁的小型 REST 請求的成本更高。如果您確實使用 REST API,請考慮使用 HTTP 保持活動或服務器發送的事件,這可以降低 SSL 握手的成本。
  • 使用 TLS 會話票證:通過頒發TLS 會話票證減少恢復連接時的 SSL 加密開銷成本。如果您確實需要頻繁、安全地連接到數據庫,這將特別有用。
  • 索引查詢:索引數據可以減少用於查詢的總帶寬,這具有降低成本和提高數據庫性能的雙重好處。使用探查器工具在數據庫中查找未索引的查詢
  • 優化您的偵聽器:添加查詢以限制您的偵聽操作返回的數據,並使用僅下載數據更新的偵聽器——例如, on()而不是once() 。此外,將您的偵聽器放置在盡可能遠的路徑上,以限制它們同步的數據量。
  • 降低存儲成本:運行定期清理作業並減少數據庫中的任何重複數據。
  • 使用規則:防止對數據庫進行任何可能代價高昂的未經授權的操作。例如,使用 Firebase 實時數據庫安全規則可以避免惡意用戶重複下載整個數據庫的情況。詳細了解如何使用 Firebase 實時數據庫規則

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