Firebase Summit のすべての発表内容に目を通し、Firebase を活用してアプリ開発を加速し、自信を持ってアプリを実行できる方法をご確認ください。 詳細

CloudFirestoreの料金の例をご覧ください

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

この基本的なチャット アプリの実例を使用して、Cloud Firestore の使用状況とコストを測定します。これは正確な見積もりではありませんが、Cloud Firestore の使用量がどのように請求されるかをよりよく理解するのに役立ちます。

概要: 使用レベル別のコスト

一般的なコストを説明するために、ユーザーが 2 人以上の参加者とチャットを開始できるチャット アプリの例を考えてみましょう。ユーザーは、アクティブなチャットをリストで表示したり、メッセージを読んだり、メッセージを送信したりできます。この例では、北米マルチリージョン (具体的にnam5 ) の料金を使用しています。

仮定

使用法とデータ ストレージについては、次の前提条件を考慮してください。

  • デイリー アクティブ ユーザー (DAU) は、アプリの合計インストール数の 10% です。 1 日のアクティブ ユーザー数 (DAU) の大まかな見積もりを使用して、1 日のコストを見積もることができます。これらは、特定の日にアプリをアクティブに開いて使用するユーザーであり、通常、アプリのインストール総数の小さなサブセットです。以下の計算では、DAU をアプリのインストール総数の 10% と推定しました。
  • ドキュメントのサイズは比較的小さいです。種類別の原稿サイズの内訳については、下の表を参照してください。
  • データは 3 か月間のみ保存されます。サンプル チャット アプリのメッセージは、3 か月間のみ保存されます。削除操作を説明するために、以下の計算は、毎日の書き込みごとに毎日の削除を示しています。
  • これらのコスト見積もりは、サンプル アプリのコストの大部分を反映していますが、すべてではありません。このガイドで概説されている最も頻繁なユーザー タスクの操作、ユーザーとメッセージのストレージ、および送信を計算することで、アプリのコストの大部分を説明しました。ただし、アプリの構造とデータのニーズによっては、追加のコストを考慮する必要がある場合があります。この例を使用して計算を行いますが、Cloud Firestore のコストの詳細な説明については、料金ページを参照してください。

ユーザー タスク別の操作の内訳については、「内訳: ユーザー タスク別の請求使用量」セクションを参照してください。

小さな
(50,000 インストール)

50,000 アプリ インストール (5,000 デイリー アクティブ ユーザー): $12.14/月

読み取り/書き込みコスト
毎月の総費用 = $11.10/月
1 日合計 40 万回の読み取り= 50K の無料読み取り + ($0.06/100K で 350K の読み取り) = 3.5 * $0.06
$0.21 / 日 * 30 = $6.30
1 日あたり合計 100K の書き込み= 20,000 の無料書き込み + ($0.18/100,000 で 80,000 の書き込み) = .8 * $0.18
$0.14 / 日 * 30 = $4.20
1 日合計 10 万件の削除= 20K の無料削除 + ($0.02/100K で 80K の削除) = .8 * $0.02
$0.02 / 日 * 30 = $0.60
ストレージ/ネットワークのコスト
毎月の総費用 = $1.04/月
20KB / 毎日の送信の DAU * 5K DAU = 1 日あたり 100 MB の下り * 30 =毎月 3 GB のネットワーク下り
3 GB の無料の下り = 無料1
1 日あたり 15KB のメッセージ ストレージ / DAU + 3KB のストレージ / インストール2 = 45KB のストレージ / DAU * 5K DAU = 225MB の毎日のストレージ / DAU * 30 = 6.75 GB の月間ストレージ使用量
1GB の無料ストレージ + (5.75 * $0.18) = $1.04/月

1 Cloud Firestore では、毎月 10 GB のネットワーク下りが無料です。
2 DAU はアプリの合計インストール数の 10% であると想定しているため、この数値はアプリをインストールしたユーザーの合計数になります。

中くらい
(100 万インストール)

1,000,000 アプリ インストール (100,000 デイリー アクティブ ユーザー): $292.02/月

読み取り/書き込みコスト
毎月の総費用 = $261.90/月
1 日合計 800 万回の読み取り= 50K の無料読み取り + ($0.06/100K で 795 万回の読み取り) = 79.5 * $0.06
$4.77 / 日 * 30 = $143.10
200 万の合計 1 日書き込み= 20,000 の無料書き込み + ($0.18/100,000 で 198 万回の書き込み) = 19.8 * $0.18
$3.56/日 * 30 = $106.80
1 日合計 200 万件の削除= 20,000 件の無料削除 + ($0.02/100,000 で 198 万件の削除) = 19.8 * $0.02
$0.40 / 日 * 30 = $12.00
ストレージ/ネットワークのコスト
毎月の総費用 = $30.12/月
20KB / 毎日の送信の DAU * 100K DAU = 1 日あたり 2 GB の下り * 30 =毎月 60 GB のネットワーク下り
10 GB の無料の送信 + (50 GB の送信 * 0.12 USD/GB) = 6.00 USD/月
1 日あたり 15KB のメッセージ ストレージ / DAU + 3KB のストレージ / インストール1 = 45KB のストレージ / DAU * 100K DAU = 1 日あたり 4.5 GB のストレージ / DAU * 30 = 135 GB の月間ストレージ使用量
1GB の無料ストレージ + (134GB * $0.18/GB) = $24.12/月

1 DAU はアプリの合計インストール数の 10% であると想定しているため、この数値はアプリをインストールしたユーザーの合計数になります。

大きい
(10M インストール)

10,000,000 アプリ インストール (1,000,000 デイリー アクティブ ユーザー): $2951.52

読み取り/書き込みコスト
毎月の総コスト = 合計: $2637.90/月
1 日の総読み取り数 8,000 万件= 5 万回の無料読み取り + ($0.06/10 万で 7,995 万回の読み取り) = 799.5 * $0.06
$47.97 / 日 * 30 = $1439.10
1 日合計 2,000 万回の書き込み= 20,000 の無料書き込み + ($0.18/100,000 で 1,998 万回の書き込み) = 199.8 * $0.18
$35.96 / 日 * 30 = $1078.80
1 日合計 2,000 万件の削除= 20,000 件の無料削除 + ($0.02/100,000 で 1,998 万件の削除) = 199.8 * $0.02
$4.00 / 日 * 30 = $120.00
ストレージ/ネットワークのコスト
毎月の総費用 = $313.62/月
20KB / 毎日の送信の DAU * 1M DAU = 1 日あたり 20 GB の下り * 30 =毎月 600 GB のネットワーク下り
10 GB の無料の送信 + (590 GB の送信 * 0.12 USD/GB) = 70.80 USD/月
1 日あたり 15KB のメッセージ ストレージ / DAU + 3KB のストレージ / インストール1 = 45KB のストレージ / DAU * 1M DAU = 1 日あたり 45 GB のストレージ / DAU * 30 = 1350 GB の月間ストレージ使用量
(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

*このサイズの計算には、メッセージ フィールドのインデックスが含まれていますが、メッセージ コンテンツのインデックス作成が無効になっていることを前提としています。

また、このアプリは、ストレージ コストを抑えるために、最大 3 か月前のメッセージのみを保存します。

ストレージ コストの計算の詳細については、ストレージ サイズの計算について を参照してください。

オペレーション

ユーザーは通常、アプリで次の一般的なタスクを完了します。

3 つの典型的なユーザー タスクに対する Cloud Firestore でのサンプル アプリの推定操作の合計は次のとおりです。

  • 読み取り: (5 * 10) + (30) = 80 読み取り/ユーザー/日
  • 書き込み: (10 * 2) = 20 書き込み/ユーザー/日
  • ネットワーク下り: (50 * 0.25KB) + (30 * 0.25KB) = 20KB/ユーザー/日
  • ストレージ: (20 * 0.75KB) = 15 KB / ユーザー / 日

ユーザータスク別の合計使用量

各ユーザー タスクを選択すると、アプリの操作、ストレージ、およびネットワークのコストの完全な説明と内訳が表示されます。

チャット一覧を見る

アプリのホーム画面には、最新の 25 件のチャットが読み込まれ、25 件のドキュメント読み取りに対して料金が発生します。アクティブなユーザーが 1 日に 5 回アプリを開き、ユーザーごとに毎日合計 125 回の読み取りがあるとします。ただし、次の例のようなより効率的なクエリを使用すると、この負荷を軽減できます。

以下の例では、アプリによって保存された成功した各フェッチのタイムスタンプを使用して、クエリを新しいチャットに制限します。

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

ユーザーがアプリをチェックするたびに、平均 10 件のチャットが更新されると仮定します。このクエリでは、ドキュメントの読み取りが 10 回しか発生しません。

チャットでメッセージを読む

ユーザーはホーム画面からチャット スレッドをクリックして最近のメッセージを表示し、最初の読み込みで最新の 50 件のメッセージを読み込みます。

一般的なユーザーがこのアクションを 1 日に 5 回 (ホーム画面を開くたびに 1 回) 実行すると仮定すると、ユーザーごとに毎日合計 250 回の読み取りが発生します。最後のフェッチ時間以降の新しいメッセージにクエリを制限することもできます。

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

ユーザーは、すべてのチャットで 1 日約 30 件のメッセージを受け取ると仮定します。クエリを新しいメッセージを取得するように制限したため、これは 1 日あたりわずか 30 件のメッセージを取得することになります。

チャットにメッセージを送信する

ユーザーは、チャット中に他の参加者にメッセージを送信できます。アクティブなユーザーが 1 日あたり約 10 件のメッセージを送信するとします。

送信されたメッセージごとに 2 つのドキュメントの書き込みが発生します。1 つはチャットのmessagesサブコレクションへの書き込み、もう 1 つはチャットの親ドキュメントへの書き込みで、 lastUpdatedタイムスタンプとその他のメタデータを更新します。

これらのメッセージを読み取るコストは他のジャーニーで考慮されているため、以下の合計はこの書き込みコストのみを考慮していることに注意してください。

含まれる利点: アプリの無料サービス

Cloud Firestore の運用、ストレージ、ネットワーク帯域幅はすべて課金対象の使用量と見なされますが、追加料金なしでその他のさまざまなメリットも得られます。 Cloud Firestore を他のデータベース オプションと比較する際に、無料の次のサービスを検討してください。

  • 直接クライアント アクセス: Cloud Firestore は、ネイティブ SDK を使用してクライアント コードから直接アクセスされます。つまり、モバイル クライアントをデータベースに接続するために API サーバーを構築して実行する必要はありません。
  • ロード バランシング: Cloud Firestore はデータベースへのトラフィックをサポートするように自動的にスケーリングするため、ロード バランサを実行する必要はありません。
  • サーバーのアップタイム: Cloud Firestore データベースは Google Cloud サーバー上で動作し、毎月 99% 以上のアップタイムを提供します。
  • 認証: Firebase Authenticationを使用して、無制限のユーザーを簡単かつ安全に認証します。 Firebase Authentication は Cloud Firestore と直接統合されるため、独自の認証サービスを実行する必要はありません。
  • プッシュ通知: Cloud Messagingでメッセージと通知を送信します。
  • その他の Firebase プロダクト: A/B Testing、Analytics、Crashlytics、Performance Monitoring、Remote Config など、他の Firebase プロダクトを無料で統合します。その他の Firebase プロダクトFirebase の価格については、こちらをご覧ください。