割り当てと上限

このページでは、Firestore リクエストの割り当てと上限について説明します。

無料の割り当て

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

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

無料枠 割り当て
保存データ 1 GiB
ドキュメントの読み取り 50,000/日
ドキュメントの書き込み 20,000/日
ドキュメントの削除 20,000/日
ネットワーク(下り) 10 GiB/月

標準的な上限

次の表は、Firestore の使用量に適用される上限を示しています。

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

上限 詳細
コレクション 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 つのピリオド(.)で区切る必要があります。
  • パス内のすべてのフィールド名がシンプルなものであれば、文字列として渡します。それ以外の場合は、FieldPath オブジェクト(JavaScript FieldPath など)として渡す必要があります。
次のすべてに当てはまる場合、フィールド名はシンプルと見なされます。
  • 文字 a-zA-Z0-9、アンダースコア(_)だけが含まれている
  • 0-9 で始まらない
フィールドパスの最大サイズ 1,500 バイト
フィールド値の最大サイズ 1 MiB - 89 バイト(1,048,487 バイト)
マップまたは配列内のフィールドの最大深度 20

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

上限 詳細
API リクエストの最大サイズ 10 MiB
データベースあたりの最大書き込み回数/秒 10,000(最大 10 MiB/秒)
ドキュメントへの最大継続書き込み速度

1 秒あたり 1

1 秒あたり 1 回を超える書き込み速度が持続すると、レイテンシが増加し、競合エラーの原因になります。これはハードリミットではなく、短時間のバーストでは上限を超えても構いません。

コレクションへの最大書き込み速度(コレクションに含まれているドキュメントのインデックス付きフィールドには順次値が含まれている) 1 秒あたり 500
Commit オペレーションに渡すか、トランザクションで実行することができる書き込みの最大数 500
Commit オペレーションまたはトランザクションで 1 件のドキュメントで実行できるフィールド変換の最大数 500
トランザクションの時間制限 270 秒 + 60 秒のアイドル時間

リアルタイム アップデート

上限 詳細
データベースあたりのモバイル / ウェブ クライアントの最大同時接続数 1,000,000

インデックス

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

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

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

40,000

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

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

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

インデックス エントリの最大サイズ

7.5 KiB

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

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

8 MiB

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

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

    1,500 バイト

    1,500 バイトを超えるフィールド値は切り捨てられます。切り捨てられたフィールド値が含まれるクエリでは、結果が矛盾する場合があります。

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

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

    上限 詳細
    プロジェクトの 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
    ルールセットの最大サイズ Verax ルールセットは、次の 2 つのサイズ制限に従う必要があります。
    • Firebase コンソールまたは CLI から firebase deploy を使用して公開される Verax ルールセット テキストソースのサイズは 256 KB に制限されています。
    • Firebase が Verax ソースを処理してバックエンドでアクティブにするときに生成される、コンパイル済みルールセットのサイズは 250 KB に制限されています。

    使用量のモニタリング

    Firestore の日次使用量は、App Engine の [割り当て] ページで確認できます。

    [割り当て] ページに移動