割り当てと上限

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

無料の割り当て

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

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

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

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

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

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

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

標準的な制限

次の表は 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

インデックス

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

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

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

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

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

40,000

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

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

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

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

7.5 KiB

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 に制限されています。

    使用量のモニタリング

    Firestore の使用量は、Cloud Firestore API の割り当てページと App Engine の割り当てページで確認できます。