使用量と上限

このガイドでは Cloud Firestore の制限について説明します。注意点を含む Cloud Firestore の費用の詳細については、Cloud Firestore の料金をご覧ください。

使用量をモニタリングする

Cloud Firestore の使用量をモニタリングするには、Firebase コンソールで Cloud Firestore[使用状況] タブを開きます。ダッシュボードを使用して、異なる期間の使用量を比較できます。

Google Cloud コンソールに表示される使用量の詳細

Firebase プロジェクトを作成すると、Google Cloud プロジェクトも作成されます。Google Cloud コンソールの Cloud Firestore API の割り当てページと App Engine の割り当てページでは、Cloud Firestore の使用量と割り当てに関する情報がトラッキングされます。

無料の割り当て

Cloud Firestore では、費用をかけずに (default) データベースの使用を開始できるよう、無料の割り当てが用意されています。無料の割り当ての容量は以下のとおりです。 割り当てがさらに必要な場合は、Google Cloud プロジェクトに対する課金を有効にする必要があります。

割り当ては日単位で適用され、太平洋時間の午前 0 時頃にリセットされます。

無料割り当ての対象となるのは (default) データベースのみです。

無料枠 割り当て
保存データ 1 GiB
ドキュメントの読み取り 50,000/日
ドキュメントの書き込み 20,000/日
ドキュメントの削除 20,000/日
送信データ転送 10 GiB/月

次のオペレーションと機能には、無料の使用量は含まれていません。次の機能を使用するには、課金を有効にする必要があります。

  • 名前付き(デフォルト以外の)データベースの使用
  • TTL の削除
  • PITR データ
  • データのバックアップ
  • 復元オペレーション

これらの機能に対する課金の詳細については、ストレージ料金をご覧ください。

標準的な制限

次の表は Cloud Firestore に適用される制限を示しています。特に断りのない限り、これらはハードリミットです。

データベース

上限 詳細
プロジェクトあたりのデータベースの最大数

100

この上限の引き上げをリクエストするには、サポートにお問い合わせください。

コレクション、ドキュメント、フィールド

上限 詳細
コレクション ID の制約
  • 有効な UTF-8 文字でなければなりません。
  • 1,500 バイト以下にする必要があります。
  • スラッシュ(/)は使用できません。
  • 1 つのピリオド(.)または 2 つのピリオド(..)のみで構成することはできません。
  • 次の正規表現とは照合できません: __.*__
サブコレクションの最大深度 100
ドキュメント ID に関する制約
  • 有効な UTF-8 文字でなければなりません。
  • 1,500 バイト以下にする必要があります。
  • スラッシュ(/)は使用できません。
  • 1 つのピリオド(.)または 2 つのピリオド(..)のみで構成することはできません。
  • 次の正規表現とは照合できません: __.*__
  • Datastore エンティティを Firestore データベースにインポートする場合は、数値のエンティティ ID は __id[0-9]+__ として公開されます
ドキュメント名の最大サイズ 6 KiB
ドキュメントの最大サイズ 1 MiB(1,048,576 バイト)
フィールド名の制約
  • 有効な UTF-8 文字でなければなりません。
  • 次の正規表現とは照合できません: __.*__
フィールド名の最大サイズ 1,500 バイト
フィールドパスの制約
  • フィールド名を 1 つのピリオド(.)で区切る必要があります。
  • それぞれが単純なフィールド名または引用符で囲まれたフィールド名(下記で定義)のいずれかであるセグメントの、ドット区切り(.)文字列として渡すことができます。
次のすべてに当てはまる場合、フィールド名はシンプルと見なされます。
  • 文字 a-zA-Z0-9、アンダースコア(_)だけが含まれている
  • 0-9 で始まらない
引用符で囲まれたフィールド名は、バッククォート文字(`)で始まり、バッククォート文字で終了します。たとえば、foo.`x&y`foo フィールドの下にネストされた x&y フィールドを表します。バッククォート文字を含むフィールド名を作成するには、バックスラッシュ文字(\)でバッククォート文字をエスケープします。便宜上、フィールド パスを FieldPath オブジェクトとして渡すことで、引用符で囲まれたフィールド名の使用を回避できます(例については、JavaScript FieldPath をご覧ください)。
フィールドパスの最大サイズ 1,500 バイト
フィールド値の最大サイズ 1 MiB - 89 バイト(1,048,487 バイト)
マップまたは配列内のフィールドの最大深度

20

マップ フィールドと配列フィールドは、オブジェクトの全体的な深度を 1 レベル引き上げます。たとえば、次のオブジェクトの合計深度は 3 レベルです。


{
  nested_map: {         #depth 1
    nested_array: [     #depth 2
      {
        foo: "bar"      #depth 3
      }
    ]
  }
}
      

書き込みとトランザクション

これらの制限に加え、スケーリングを考慮して設計する際のベスト プラクティスもご覧ください。

上限 詳細
API リクエストの最大サイズ 10 MiB
トランザクションの時間制限 270 秒 + 60 秒のアイドル時間
Commit オペレーションまたはトランザクションで 1 件のドキュメントで実行できるフィールド変換の最大数 500

インデックス

単一フィールド インデックス複合インデックスには、以下の上限が適用されます。

上限 詳細
データベース 1 つあたりの複合インデックスの最大数
データベース 1 つあたりの単一フィールド構成の最大数

1 つのフィールド レベルの構成に、同じフィールドの構成を複数含めることができます。たとえば、単一フィールド インデックス除外と、同じフィールドに対する TTL ポリシーは、上限に対して 1 つのフィールド構成としてカウントされます。

ドキュメントごとのインデックス エントリの最大数

40,000

インデックス エントリの数は、ドキュメントに関する次の数の合計です。

  • 単一フィールド インデックス エントリ数
  • 複合インデックス エントリ数

Cloud Firestore がドキュメントと一連のインデックスをインデックス エントリに変換する仕組みについては、このインデックス エントリ数の例をご覧ください。

複合インデックス内のフィールドの最大数 100
インデックス エントリの最大サイズ

7.5 KiB

Cloud Firestore でインデックス エントリのサイズを計算する方法については、インデックス エントリのサイズをご覧ください。

ドキュメントのインデックス エントリの最大合計サイズ

8 MiB

合計サイズは、ドキュメントに関する次の数の合計です。

  • ドキュメントの単一フィールド インデックス エントリの合計サイズ
  • ドキュメントの複合インデックス エントリの合計サイズ
  • インデックス登録されるフィールド値の最大サイズ

    1,500 バイト

    1,500 バイトを超えるフィールド値は切り捨てられます。切り捨てられたフィールド値が含まれるクエリからは、整合性のない結果が返されることがあります。

    有効期間(TTL)

    上限 詳細
    データベース 1 つあたりの単一フィールド構成の最大数

    1 つのフィールド レベルの構成に、同じフィールドの構成を複数含めることができます。たとえば、単一フィールド インデックス除外と、同じフィールドに対する TTL ポリシーは、上限に対して 1 つのフィールド構成としてカウントされます。

    エクスポート / インポート

    マネージド型のインポートおよびエクスポート オペレーションには次の上限が適用されます。

    上限 詳細
    プロジェクトの 1 分間に許可されるエクスポートおよびインポート リクエストの最大合計数 20
    同時エクスポートおよびインポートの最大数 50
    エクスポートおよびインポート リクエストのコレクション ID のフィルタの最大数 100

    セキュリティ ルール

    上限 詳細
    リクエストあたりの exists()get()getAfter() 呼び出しの最大数
    • 単一ドキュメントに対するリクエストとクエリ リクエストの場合は 10。
    • 複数のドキュメントに対する読み取り、トランザクション、一括書き込みの場合は 20。各オペレーションには、前述の上限(10)も適用されます。

      たとえば、3 つの書き込みオペレーションを含めた一括書き込みリクエストを作成するとします。セキュリティ ルールでは、ドキュメントに対する 2 件のアクセス呼び出しを使用して、それぞれの書き込みを検証します。この場合、各書き込みオペレーションがアクセス呼び出し制限数 10 のうちの 2 つを使用するため、バッチ書き込みリクエストはアクセス呼び出し制限数 20 のうちの 6 つを使用することになります。

    いずれかの上限を超えると、アクセス拒否のエラーが発生します。

    一部のドキュメントに対するアクセス呼び出しはキャッシュされる場合があります。キャッシュされた呼び出しは上限数に計上されません。

    ネストされた match ステートメントの深さの最大数 10
    ネストされた一連の match ステートメント内で許可されるパスセグメント内の最大パス長 100
    ネストされた一連の match ステートメント内で許可されるパスキャプチャ変数の最大数 20
    関数呼び出しの深さの最大数 20
    関数引数の最大数 7
    関数あたりの let 変数バインディングの最大数 10
    関数の再帰的な呼び出し、または循環的な呼び出しの最大数 0(許可されていません)
    リクエストあたり評価される式の最大数 1,000
    ルールセットの最大サイズ ルールセットは、次の 2 つのサイズ上限に従う必要があります。
    • Firebase コンソールまたは CLI から firebase deploy を使用して公開されるルールセット テキストソースのサイズには 256 KB の上限が設定されています。
    • Firebase がソースを処理してバックエンドでアクティブにするときに生成される、コンパイル済みルールセットのサイズは 250 KB に制限されています。

    費用を管理する

    想定外の請求を回避するには、1 か月の予算とアラートを設定します。

    1 か月の予算を設定する

    Cloud Firestore の費用をトラッキングするには、Google Cloud コンソールで 1 か月の予算を作成します。予算によって使用量が制限されることはありませんが、その月の計画コストに近づいた場合や超えた場合に通知するアラートを設定できます。

    予算を設定するには、Google Cloud コンソールの [お支払い] セクションに移動し、Cloud Billing アカウントの予算を作成します。デフォルトのアラート設定を使用するか、1 か月の予算の割合ごとに通知を送信するようにアラートを変更できます。

    予算と予算アラートの設定をご覧ください。