請參考這個基本即時通訊應用程式的實際範例,評估您的 Cloud Firestore 用量和費用。這並非確切的預估值,但有助於您進一步瞭解 Cloud Firestore 用量如何計費。
總覽:依用量層級計算的費用
舉例來說,即時通訊應用程式可讓使用者與兩位或更多參與者啟動聊天。使用者可以在清單中查看目前的聊天內容、閱讀訊息,以及傳送訊息。在本例中,我們使用北美多區域 (具體為 nam5
) 的價格。
假設
請考量下列關於使用情形和資料儲存空間的假設:
- 每日活躍使用者 (DAU) 是應用程式總安裝數的 10%。您可以根據每日活躍使用者人數 (DAU) 的粗略估計值,估算每日成本。這些使用者是指在特定日期積極開啟並使用應用程式的使用者,通常是應用程式總安裝數的一小部分。在下列計算中,我們將 DAU 估算為應用程式總安裝數的 10%。
- 文件大小相對較小。請參閱下表,瞭解文件大小依類型劃分的細目。
- 資料只會保留三個月。範例即時通訊應用程式中的訊息只會保留三個月。為了計算刪除作業,下列計算會顯示每天刪除作業的每日寫入作業。
- 這些預估費用反映的是範例應用程式的大部分成本,但並非全部。我們已計算應用程式的大部分成本,方法是計算這份指南中列出的使用者最常執行的作業、使用者和訊息儲存空間,以及傳出作業。不過,您可能需要考量額外費用,具體取決於應用程式的結構和資料需求。請參考這個範例來計算費用,但如要進一步瞭解 Cloud Firestore 費用,請參閱定價頁面。
如要查看依使用者工作分類的作業細目,請參閱「細目:依使用者工作計算的帳單使用量」一節。
小
(50,000 次安裝)
50,000 次應用程式安裝 (5,000 名每日活躍使用者):$12.14 美元/月
讀取/寫入費用 | |||||
---|---|---|---|---|---|
每月總費用 = $11.10 美元/月 | |||||
每日總讀取次數達 40 萬 | = | 50K 次免費讀取 + (350K 次讀取,每 100K 次 $0.06 美元) | = | 3.5 * $0.06 | |
$0.21 美元 / 天 * 30 天 = $6.30 美元 | |||||
每日總寫入作業數量為 100K | = | 20K 次免費寫入作業 + (80K 次寫入作業,每 100K 次 $0.18 美元) | = | .8 * $0.18 | |
$0.14 美元 / 天 * 30 天 = $4.20 美元 | |||||
每天總刪除數 10 萬 | = | 20,000 次免費刪除 + (80,000 次刪除,每 100,000 次 $0.02 美元) | = | .8 * $0.02 | |
$0.02 美元 / 天 * 30 = $0.60 美元 |
儲存空間/網路費用 | |||||||
---|---|---|---|---|---|---|---|
每月總費用 = $1.04 美元/月 | |||||||
每日輸出流量 20 KB / DAU * 5,000 個 DAU | = | 每日輸出流量 100 MB * 30 | = | 每月 3 GB 網路輸出量 | |||
3 GB 免費輸出 = 免費1 | |||||||
每日訊息儲存空間 15 KB/DAU + 安裝空間 3 KB2 | = | 45 KB 的儲存空間 / DAU * 5,000 名 DAU | = | 225 MB 的每日儲存空間 / DAU * 30 | = | 每月 6.75 GB 的儲存空間用量 | |
1 GB 免費儲存空間 + (5.75 * $0.18) = $1.04 美元 / 月 |
1 Cloud Firestore 每月可免費使用 10 GB 的網路輸出量。
2 我們假設 DAU 是總安裝次數的 10%,因此這個數字會計算已安裝應用程式的使用者總數。
中
(100 萬次安裝)
1,000,000 次應用程式安裝 (100,000 名每日活躍使用者):$292.02 美元/月
讀取/寫入費用 | |||||
---|---|---|---|---|---|
每月總費用 = $261.90 美元/月 | |||||
每日總讀取次數 800 萬 | = | 50,000 次免付費閱讀 + (795 萬次閱讀,每 100,000 次 $0.06 美元) | = | 79.5 * $0.06 美元 | |
$4.77 美元 / 天 * 30 天 = $143.10 美元 | |||||
每日總寫入次數 200 萬 | = | 20K 免費寫入 + (1.98M 次寫入,每 100K 次 $0.18 美元) | = | 19.8 * $0.18 | |
$3.56 美元 / 天 * 30 天 = $106.80 美元 | |||||
每天刪除 200 萬筆 | = | 20,000 次免費刪除作業 + (1,980,000 次刪除作業,每 100,000 次刪除作業 $0.02 美元) | = | 19.8 * $0.02 | |
$0.40 美元 / 天 * 30 天 = $12.00 美元 |
儲存空間/網路費用 | |||||||
---|---|---|---|---|---|---|---|
每月總費用 = $30.12 美元/月 | |||||||
每日輸出流量 20 KB / DAU * 10 萬個 DAU | = | 每日輸出流量 2 GB * 30 | = | 每月 60 GB 網路輸出量 | |||
10 GB 免費輸出量 + (50 GB 輸出量 * $0.12 美元/GB) = $6.00 美元 / 月 | |||||||
每日訊息儲存空間 15 KB / DAU + 儲存空間 3 KB / 安裝1 | = | 45 KB 的儲存空間 / DAU * 10 萬名 DAU | = | 4.5 GB 的每日儲存空間 / DAU * 30 | = | 每月儲存空間用量 135 GB | |
1 GB 免費儲存空間 + (134 GB * $0.18/GB) = $24.12 美元 / 月 |
1 我們假設每日活躍使用者人數占應用程式總安裝數的 10%,因此這個數字會計算出安裝應用程式的使用者總數。
Large
(10M 安裝次數)
10,000,000 次應用程式安裝 (1,000,000 名每日活躍使用者):$2951.52 美元
讀取/寫入費用 | |||||
---|---|---|---|---|---|
每月總費用 = 總計:$2637.90 美元/月 | |||||
每日讀取次數總計 8,000 萬 | = | 50,000 次免付費閱讀 + (79,950 次閱讀,每 100,000 次閱讀 $0.06 美元) | = | 799.5 * $0.06 美元 | |
$47.97 美元 / 天 * 30 天 = $1439.10 美元 | |||||
每日總寫入次數 2,000 萬 | = | 20K 免費寫入作業 + (19.98M 次寫入作業,每 100,000 次 $0.18 美元) | = | 199.8 * $0.18 | |
$35.96 美元 / 天 * 30 天 = $1078.80 美元 | |||||
每日總刪除次數 2,000 萬 | = | 20,000 次免費刪除作業 + (19,980,000 次刪除作業,每 100,000 次刪除作業 $0.02 美元) | = | 199.8 * $0.02 | |
$4.00 美元 / 天 * 30 天 = $120.00 美元 |
儲存空間/網路費用 | |||||||
---|---|---|---|---|---|---|---|
每月總費用 = $313.62 美元/月 | |||||||
每日輸出流量 20 KB / DAU * 100 萬 DAU | = | 每日輸出流量 20 GB * 30 | = | 每月 600 GB 的網路輸出量 | |||
10 GB 免費輸出流量 + (590 GB 輸出流量 * $0.12 美元/GB) = 每月 $70.80 美元 | |||||||
每日訊息儲存空間 15 KB / DAU + 儲存空間 3 KB / 安裝1 | = | 45 KB 儲存空間 / DAU * 100 萬名 DAU | = | 45 GB 的每日儲存空間 / DAU * 30 | = | 每月 1350 GB 的儲存空間用量 | |
(1 GB 免費儲存空間) + (1349 GB * $0.18 美元/GB) = $242.82 美元 / 月 |
1 我們假設每日活躍使用者人數占應用程式總安裝數的 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 個索引項目,而各批次會產生讀取文件 1 次的費用。執行每日匯總功能會產生下列月費:
小
(50,000 次安裝)
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 美元
中
(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 美元
Large
(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 資料庫會在 Google Cloud 伺服器上運作,提供超過 99% 的月正常運作時間。
- 驗證:使用 Firebase Authentication 以簡單又安全的方式驗證無限使用者。Firebase Authentication 會直接整合 Cloud Firestore,因此您不需要自行執行驗證服務。
- 推播通知:使用 Cloud Messaging 傳送訊息和通知。
- 其他 Firebase 產品:免費整合其他 Firebase 產品,包括 A/B 測試、Analytics、Crashlytics、Performance Monitoring 和遠端設定。進一步瞭解其他 Firebase 產品和 Firebase 定價。