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

查看 Cloud Firestore 定價示例

使用這個基本聊天應用的真實示例來衡量您的 Cloud Firestore 使用情況和成本。這不是一個準確的估計值,但它可以幫助您更好地了解您的 Cloud Firestore 使用量是如何計費的。

概述:按使用級別劃分的成本

為了說明典型成本,請考慮一個示例聊天應用程序,用戶可以在其中發起與兩個或更多參與者的聊天。用戶可以在列表中查看他們的活動聊天、閱讀消息和發送消息。在此示例中,我們使用北美多區域的定價(特別是nam5 )。

假設

考慮以下關於使用和數據存儲的假設:

  • 每日活躍用戶 (DAU) 占應用總安裝量的 10%。您可以使用對每日活躍用戶 (DAU) 的粗略估算來估算每日成本。這些是在給定日期積極打開和使用您的應用程序的用戶,這通常是您的應用程序總安裝量的一小部分。對於以下計算,我們估計 DAU 占應用安裝總數的 10%。
  • 文檔尺寸相對較小。請參閱下表,了解按類型劃分的文檔大小細目。
  • 數據僅存儲三個月。示例聊天應用程序中的消息僅存儲三個月。考慮到刪除操作,下面的計算顯示了每個每日寫入的每日刪除。
  • 這些成本估算反映了示例應用程序的大部分成本,但不是全部。我們通過計算本指南中列出的最常見用戶任務的操作、用戶和消息存儲以及出口來計算應用程序的大部分成本。但是,您可能需要考慮額外的成本,具體取決於您的應用程序的結構和數據需求。使用此示例來指導您的計算,但有關 Cloud Firestore 費用的更詳盡說明,請參閱定價頁面

有關按用戶任務劃分的操作細分,請參閱細分:按用戶任務計費的使用量部分。

小的
(50k 次安裝)

對於 50,000 次應用安裝(5,000 名每日活躍用戶):每月 12.14 美元

讀/寫成本
每月總費用 = 11.10 美元/月
每日總閱讀量 400K = 5 萬次免費讀取 +(35 萬次讀取,0.06 美元/10 萬美元) = 3.5 * 0.06 美元
0.21 美元/天 * 30 = 6.30 美元
每日總寫入量 100K = 2 萬次免費寫入 +(8 萬次寫入,0.18 美元/10 萬美元) = .8 * 0.18 美元
0.14 美元/天 * 30 = 4.20 美元
每日總刪除量 100K = 2 萬次免費刪除 +(8 萬次刪除,每 0.02 美元/10 萬美元) = .8 * $0.02
0.02 美元/天 * 30 = 0.60 美元
存儲/網絡成本
每月總費用 = 1.04 美元/月
20KB / DAU 的每日出口 * 5K DAU =每天 100MB 的出口 * 30 =每月 3GB 網絡出口
3 GB 無成本出口 = 無成本1
15KB 每日消息存儲/DAU + 3KB 存儲/安裝2 = 45KB 存儲/DAU * 5K DAU = 225MB 每日存儲/DAU * 30 = 6.75GB 每月存儲使用量
1GB 免費存儲 + (5.75 * $0.18) = $1.04 / 月

1 Cloud Firestore 每月 10GB 的網絡出口是免費的。
2由於我們假設 DAU 占應用總安裝量的 10%,因此該數字佔安裝了您應用的用戶總數。

中等的
(1M 安裝)

對於 1,000,000 次應用安裝(100,000 名每日活躍用戶):292.02 美元/月

讀/寫成本
每月總費用 = 261.90 美元/月
每日總閱讀量 800 萬= 5 萬次免費讀取 +(795 萬次讀取,0.06 美元/10 萬美元) = 79.5 * 0.06 美元
4.77 美元/天 * 30 = 143.10 美元
每日總寫入量 200 萬= 2 萬次免費寫入 +(198 萬次寫入,0.18 美元/10 萬美元) = 19.8 * 0.18 美元
3.56 美元/天 * 30 = 106.80 美元
每日總刪除量 200 萬= 2 萬次免費刪除 +(198 萬次刪除,0.02 美元/10 萬美元) = 19.8 * 0.02 美元
0.40 美元/天 * 30 = 12.00 美元
存儲/網絡成本
每月總費用 = 30.12 美元/月
20KB / DAU 的每日出口 * 100K DAU = 2GB 每日出站流量 * 30 = 60GB 每月網絡出口
10 GB 免費出口 + (50GB 出口 * 0.12 USD/GB) = 6.00 USD/月
15KB 每日消息存儲/DAU + 3KB 存儲/安裝1 = 45KB 存儲/DAU * 100K DAU = 4.5GB 每日存儲/DAU * 30 =每月 135GB 存儲使用量
1GB 免費存儲 + (134GB * 0.18 美元/GB) = 24.12 美元/月

1由於我們假設 DAU 占應用總安裝量的 10%,因此這個數字佔安裝了您應用的用戶總數。


(10M 安裝)

對於 10,000,000 次應用安裝(1,000,000 名每日活躍用戶):2951.52 美元

讀/寫成本
每月總成本 = 總計:2637.90 美元/月
每日總閱讀量 80M = 5 萬次免費讀取 +(7995 萬次讀取,0.06 美元/10 萬美元) = 799.5 * 0.06 美元
47.97 美元/天 * 30 = 1439.10 美元
每日總寫入量 20M = 2 萬次免費寫入 +(1998 萬次寫入,0.18 美元/10 萬美元) = 199.8 * 0.18 美元
35.96 美元/天 * 30 = 1078.80 美元
每日總刪除量 20M = 2 萬次免費刪除 +(1998 萬次刪除,0.02 美元/10 萬美元) = 199.8 * $0.02
4.00 美元/天 * 30 = 120.00 美元
存儲/網絡成本
每月總費用 = 313.62 美元/月
20KB / DAU 的每日出口 * 1M DAU = 20GB 每日出站流量 * 30 = 600GB 每月網絡出口
10 GB 免費出口 + (590GB 出口 * 0.12 USD/GB) = 70.80 USD/月
15KB 每日消息存儲/DAU + 3KB 存儲/安裝1 = 45KB 存儲/DAU * 1M DAU = 45GB 每日存儲/DAU * 30 = 1350GB 每月存儲使用量
(1GB 免費存儲)+(1349GB * 0.18 美元/GB)= 242.82 美元/月

1由於我們假設 DAU 占應用總安裝量的 10%,因此這個數字佔安裝了您應用的用戶總數。

值得考慮的 Cloud Firestore 計費模型的一個好處是您只需為使用的內容付費。因此,您的賬單可能會隨著您的 DAU 數量而增加或減少。

細分:按用戶任務計費的使用量

對於我們的示例聊天應用程序,數據結構如下:

  • users/{userId} - 用戶記錄
  • groups/{groupId} - 2 個或更多用戶之間的聊天
    • messages/{messageId} — 聊天中的每條消息。

數據存儲

要計算存儲應用程序數據的存儲成本,請應用以下有關文檔大小的假設:

收藏文件大小(在途)文檔大小(在磁盤上)*
用戶1KB 3KB
團體0.5KB 1.5KB
消息0.25KB 0.75KB

*此大小計算包括消息字段的索引,但假定對消息內容禁用索引。

該應用程序還只存儲長達三個月的消息,以降低存儲成本。

有關計算存儲成本的更多信息,請參閱了解存儲大小計算

運營

用戶通常在應用程序中完成以下常見任務:

示例應用在 Cloud Firestore 中針對三個典型用戶任務的總估計操作如下:

  • 讀取: (5 * 10) + (30) = 80 讀取/用戶/天
  • 寫入次數: (10 * 2) = 20 次寫入/用戶/天
  • 網絡出口:(50 * 0.25KB) + (30 * 0.25KB) = 20KB / 用戶 / 天
  • 存儲:(20 * 0.75KB) = 15 KB/用戶/天

用戶任務的總使用量

選擇每個用戶任務以查看應用程序中操作、存儲和網絡成本的完整描述和細分。

查看聊天列表

該應用程序的主屏幕會加載 25 個最近的聊天記錄,讀取 25 個文檔會產生費用。假設一個活躍用戶每天打開應用程序 5 次,每個用戶每天總共有 125 次閱讀。但是,更高效的查詢(如以下示例中的查詢)可以減少這種負載。

在下面的示例中,我們使用應用程序存儲的每次成功獲取的時間戳將查詢限制為新聊天:

db.collection('groups')
  .where('participants', 'array-contains', 'user123')
  .where('lastUpdated', '>', lastFetchTimestamp)
  .orderBy('lastUpdated', 'desc')
  .limit(25)

假設用戶每次檢查應用程序時平均有 10 個更新的聊天。此查詢僅導致 10 次文檔讀取。

在聊天中閱讀消息

用戶從主屏幕單擊聊天線程以查看最近的消息,在初始加載中加載 50 條最新消息。

假設典型用戶每天執行此操作 5 次(每次打開主屏幕時執行一次),導致每個用戶每天總共讀取 250 次。我們還可以將查詢限制為自上次獲取時間以來的新消息:

db.collection('groups')
  .doc('group234')
  .collection('messages')
  .where('sentTime', '>', lastFetchTimestamp)
  .orderBy('sentTime', 'desc')
  .limit(50)

假設用戶在所有聊天中每天收到大約 30 條消息。由於您已將查詢限制為獲取新消息,因此這意味著每天只能檢索 30 條消息。

向聊天室發送消息

用戶可以在聊天后向其他參與者發送消息。假設活躍用戶每天發送大約 10 條消息。

每條發送的消息都會導致兩次文檔寫入:一次寫入聊天的messages子集合,一次寫入聊天父文檔以更新lastUpdated時間戳和其他元數據。

請注意,讀取這些消息的成本已計入其他旅程,因此以下總計僅考慮此寫入成本。

包含的好處:為您的應用程序提供免費服務

雖然 Cloud Firestore 操作、存儲和網絡帶寬都被視為可計費的使用量,但您還可以免費獲得各種其他好處。在將 Cloud Firestore 與其他數據庫選項進行比較時,請考慮以下免費服務:

  • 直接客戶端訪問:使用我們的原生 SDK 從您的客戶端代碼直接訪問 Cloud Firestore。這意味著您無需構建和運行 API 服務器即可將移動客戶端連接到數據庫。
  • 負載平衡:由於 Cloud Firestore 會自動擴展以支持流向您的數據庫的流量,因此您無需運行負載平衡器。
  • 服務器正常運行時間: Cloud Firestore 數據庫在 Google Cloud 服務器上運行,每月正常運行時間超過 99%
  • 身份驗證:使用Firebase 身份驗證簡單、安全地對無限用戶進行身份驗證。 Firebase 身份驗證直接與 Cloud Firestore 集成,因此您無需運行自己的身份驗證服務。
  • 推送通知:使用Cloud Messaging發送消息和通知。
  • 其他 Firebase 產品:免費集成其他 Firebase 產品,包括 A/B 測試、分析、Crashlytics、性能監控和遠程配置。詳細了解其他 Firebase 產品Firebase 定價