Catch up on highlights from Firebase at Google I/O 2023. Learn more

查看 Cloud Firestore 定價示例

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

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

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

假設

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

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

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

小的
(5 萬次安裝)

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

讀/寫成本
每月總費用 = 11.10 美元/月
每日總閱讀量 400K = 50,000 次免費讀取 +(350,000 次讀取,0.06 美元/100,000 美元) = 3.5 * 0.06 美元
0.21 美元/天 * 30 = 6.30 美元
每天總計 100K 次寫入= 20,000 次免費寫入 +(80,000 次寫入,0.18 美元/100,000 美元) = .8 * 0.18 美元
0.14 美元/天 * 30 = 4.20 美元
每日總刪除量 100K = 20,000 次免費刪除 +(80,000 次刪除,每 100,000 美元 0.02 美元) = .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%,因此該數字佔安裝您應用的用戶總數。

中等的
(100 萬次安裝)

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

讀/寫成本
每月總費用 = 261.90 美元/月
每日總閱讀量 800 萬= 5 萬次免費讀取 +(795 萬次讀取,每 10 萬美元 0.06 美元) = 79.5 * 0.06 美元
4.77 美元/天 * 30 = 143.10 美元
每日總寫入量為 2M = 2 萬次免費寫入 +(198 萬次寫入,每 10 萬美元 0.18 美元) = 19.8 * 0.18 美元
3.56 美元/天 * 30 = 106.80 美元
每日總刪除量 200 萬= 20K 次免費刪除 +(198 萬次刪除,每 100K 美元 0.02 美元) = 19.8 * 0.02 美元
0.40 美元/天 * 30 = 12.00 美元
存儲/網絡成本
每月總費用 = 30.12 美元/月
每日出口的 20KB / DAU * 100K DAU = 2GB 每日出口 * 30 =每月 60GB 網絡出口
10 GB 免費出口 +(50GB 出口 * 0.12 美元/GB)= 6.00 美元/月
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 美元/月
每日總閱讀量 8000 萬= 5 萬次免費讀取 +(7995 萬次讀取,每 10 萬美元 0.06 美元) = 799.5 * 0.06 美元
47.97 美元/天 * 30 = 1439.10 美元
每日總寫入量為 20M = 2 萬次免費寫入 +(1998 萬次寫入,每 10 萬美元 0.18 美元) = 199.8 * 0.18 美元
35.96 美元/天 * 30 = 1078.80 美元
每日總刪除量 20M = 20K 次免費刪除 +(1998 萬次刪除,每 100K 美元 0.02 美元) = 199.8 * 0.02 美元
4.00 美元/天 * 30 = 120.00 美元
存儲/網絡成本
每月總費用 = 313.62 美元/月
每日出口的 20KB / DAU * 1M DAU =每日出口 20GB * 30 =每月 600GB 網絡出口
10 GB 免費出口 +(590GB 出口 * 0.12 美元/GB)= 70.80 美元/月
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時間戳和其他元數據。

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

管理員任務的計費使用量

作為應用所有者或管理員,您可能希望根據應用數據生成報告。例如,您可能希望記錄用戶每天發送的消息數。您可以使用messages收集組的count()聚合來完成此操作。

對於諸如count()之類的聚合查詢,您需要為查詢匹配的每批最多 1,000 個索引條目的一個文檔讀取付費。運行此每日聚合會增加以下月度費用:

小的
(5 萬次安裝)

對於 50,000 次應用安裝(5,000 個 DAU):每月 0.0009 美元

5,000 個活躍用戶 * 每個用戶 10 條新消息 = 每天 50,000 個新消息文檔

50,000 個文檔計數/每次讀取費用 1,000 個索引匹配 = 50 次讀取

每天 50 次讀取 * 30 天 = 每月 1,500 次讀取

每月 1,500 次讀取 * .06/100,000 次讀取價格 = 每月 0.0009 USD

中等的
(100 萬次安裝)

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

100,000 個活躍用戶 * 每個用戶 10 條新消息 = 每天 1,000,000 個新消息文檔

計算的 1,000,000 個文檔/每次讀取收費 1,000 個索引匹配 = 1,000 次讀取

每天 1,000 次讀取 * 30 天 = 每月 30,000 次讀取

每月 30,000 次讀取 * .06/100,000 次讀取價格 = 每月 0.018 USD

大的
(10M 安裝)

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

1,000,000 個活躍用戶 * 每個用戶 10 條新消息 = 每天 10,000,000 個新消息文檔

計算的 10,000,000 個文檔/每次讀取收費 1,000 個索引匹配 = 10,000 次讀取

每天 10,000 次讀取 * 30 天 = 每月 300,000 次讀取

每月 300,000 次讀取 * .06/100000 次讀取價格 = 每月 0.18 美元

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

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

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