請參考這個基本即時通訊應用程式的實際範例,評估您的 Cloud Firestore 用量和費用。這並非確切的預估值,但有助於您進一步瞭解 Cloud Firestore 用量如何計費。
總覽:依用量層級計算的費用
為了說明一般費用,我們以即時通訊應用程式為例,讓使用者能夠與兩位以上的參與者展開即時通訊。使用者可以在清單中查看目前的聊天內容、閱讀訊息,以及傳送訊息。在本例中,我們要使用北美洲多區域 (特別是 nam5
) 的價格。
假設
請考量下列關於使用情形和資料儲存空間的假設:
- 每日活躍使用者 (DAU) 是應用程式總安裝數的 10%。您可以利用每日活躍使用人數 (DAU) 的粗略估計,估算每日費用。這些使用者是指在特定日期積極開啟並使用應用程式的使用者,通常是應用程式總安裝數的一小部分。在下列計算中,我們將 DAU 估算為應用程式總安裝數的 10%。
- 文件大小相對較小。請參閱下表,瞭解文件大小依類型劃分的細目。
- 資料只會保留三個月。範例即時通訊應用程式中的訊息只會保留三個月。為了計算刪除作業,下列計算會顯示每天刪除作業的每日寫入作業。
- 這些費用預估值只反映範例應用程式的大量費用,而非所有費用。我們已計算應用程式的大部分成本,方法是計算這份指南中列出的使用者最常執行的作業、使用者和訊息儲存空間,以及傳出作業。不過,您可能需要考量額外費用,具體取決於應用程式的結構和資料需求。請參考這個範例來計算費用,但如要進一步瞭解 Cloud Firestore 費用,請參閱定價頁面。
如要查看依使用者工作分類的作業細目,請參閱「細目:依使用者工作計算的帳單使用量」一節。
小
(50,000 次安裝)
50,000 次應用程式安裝 (每日活躍使用人數 5,000 人):每月 $12.14 美元
讀取/寫入費用 | |||||
---|---|---|---|---|---|
每月總費用 = $11.10 美元/月 | |||||
每日總讀取次數達 40 萬 | = | 5 萬次免費閱讀 + (35 萬次讀取,每 10 萬美元 $0.06 美元) | = | 3.5 * $0.06 | |
$0.21 美元/天 * 30 天 = $6.30 美元 | |||||
每日總計 10 萬次寫入 | = | 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 / 每日輸出的每日活躍使用者 * 每日 5,000 名活躍使用者 | = | 每日輸出流量 100 MB * 30 | = | 每月 3 GB 網路輸出量 | |||
3 GB 免費輸出流量 = 免費1 | |||||||
每日訊息儲存空間 15 KB/DAU + 安裝空間 3 KB2 | = | 45 KB 的儲存空間 / DAU * 5,000 名 DAU | = | 225 MB 每日儲存空間 / 每日活躍使用者 * 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 萬次寫入 | = | 2 萬次免費寫入 + (198 萬次寫入,每 10 萬次 $0.18 美元) | = | 19.8 * $0.18 | |
$3.56 美元/天 * 30 天 = $106.80 美元 | |||||
每天刪除 200 萬筆 | = | 2 萬次免費刪除數 + (1980 萬刪除作業,每 10 萬美元 $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 儲存空間 / 每日活躍使用者 * 10 萬名每日活躍使用者 | = | 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 萬 | = | 2 萬次免費寫入 + (1.998 億次寫入,每 10 萬美元 $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}
:即時通訊中的每則訊息。
資料儲存
如要計算儲存應用程式資料的儲存費用,請套用下列文件大小的假設:
集合 | 文件大小 (傳輸中) | 文件大小 (磁碟上)* |
---|---|---|
使用者 | 1 KB | 3 KB |
群組 | 0.5 KB | 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 名活躍使用者):每月 $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 與其他資料庫選項,下列是免費的服務:
- 直接用戶端存取: Cloud Firestore使用我們的原生 SDK,直接透過您的用戶端程式碼存取。也就是說,您不必建構及執行 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 定價。