料金設定の例

Cloud Firestore Enterprise エディションにのみ関連します。

このページでは、最も一般的なシナリオで課金単位がどのように計算されるかの例を示します。各クエリで処理されるデータは、クエリプラン、データの形状、使用可能なインデックスなどの要因によって異なる場合があります。

特定のクエリの費用とパフォーマンスをより深く理解するには、クエリの説明機能を使用することをおすすめします。

読み取りオペレーション

ほとんどの読み取りオペレーションでは、特定のドキュメントのポイント読み取りを実行するか、識別子に基づいてデータの範囲をスキャンします。読み取りオペレーションは読み取りユニットを消費します。読み取り単位は 4 KiB トランシェで計算されます。次の例をご覧ください。

ポイント読み取り

ポイント読み取りの課金の例:

  • 1 つの 1 KiB ドキュメントのポイント読み取り。消費: 1 読み取り単位
  • 単一の 4 KiB ドキュメントのポイント読み取り。消費: 1 読み取り単位
  • 1 つの 1 MiB ドキュメントのポイント読み取り。消費量: 256 読み取り単位
  • 100 個のドキュメントのポイント読み取り(各 1 KiB)。消費量: 100 読み取りユニット

スキャン

次の例には、ドキュメントまたはインデックス エントリをスキャンするシナリオが含まれています。

ドキュメントのスキャン

  • 100 個のドキュメント(それぞれ 1 KiB)をスキャンするクエリ。消費: 25 読み取りユニット

インデックスのスキャン

スキャンする対象がドキュメントかインデックスかに関係なく、スキャン費用(バイト単位)は同じです。ただし、インデックス エントリのサイズは小さくなることがよくあります。そのため、多くの場合、より費用対効果の高いデータ スキャン方法を提供できます。

  • 100 個のインデックス エントリ(各 1 KiB)をスキャンするクエリ。消費量: 25 読み取り単位。
  • 100 個のインデックス エントリ(それぞれ 128 バイト)をスキャンするクエリ。消費: 4 読み取り単位。

ドキュメントまたはインデックス エントリの最小サイズ

状況によっては、クエリを満たすためにドキュメントやインデックス エントリの内容を読み取る必要がない場合があります。これには、コレクション内のドキュメントの総数をカウントするなどの単純なカウントクエリが含まれます。このような状況では、スキャンされたアイテムごとに最小コストの 32 バイトが適用されます。

  • コレクション内のドキュメント数をカウントします。クエリはコレクション内の 1,000 個のアイテムをスキャンします。消費: 8 読み取りユニット。

スキャンとポイント読み取りの組み合わせ

多くのクエリは、オペレーションを満たすためにスキャンとポイント読み取りを組み合わせて実行します。

  • 128 個のインデックス エントリ(それぞれ 256 バイト)をスキャンし、128 個のドキュメント(それぞれ 4 KiB)のポイント読み取りを実行するクエリ。消費量: 136 読み取り単位(内訳は次のとおり)。
    • ポイント読み取りの読み取り単位 128 個
    • インデックス スキャン用の 8 個の読み取りユニット

Query Explain

クエリの説明を使用すると、データベースがクエリを実行する方法を理解できます。提供された詳細は、クエリの最適化に役立ちます。

Query Explain を使用する場合は、次の費用が適用されます。

  • クエリを実行する Query Explain: クエリ費用が適用されます。
  • プランのみのオプションを使用する Query Explain。消費量: 1 読み取りユニット(クエリの最小コスト)

書き込みオペレーション

書き込みオペレーション(作成、更新、削除)は、オペレーション中に作成、変更、削除されるドキュメントとインデックスのサイズに基づいて課金されます。書き込みオペレーションは書き込みユニットを消費します。書き込み単位は 1 KiB トランシェで計算されます。

ドキュメント ID による更新などの単純な書き込みオペレーションでは、書き込みの費用のみが発生します。オペレーションを満たすためにクエリを必要とする書き込みオペレーションでは、クエリに関連する読み取り費用も発生します。

次の例をご覧ください。

作成

  • インデックスのない 10 KiB の新しいドキュメントを作成します。消費: 10 個の書き込みユニット
  • コレクションに 256 バイトのインデックス エントリが 1 つある 1 KiB のドキュメントを作成します。消費: 2 書き込みユニット

更新

  • ドキュメント ID で 10 KiB のドキュメントを検索し、コレクションにインデックスがない状態で更新します。消費: 10 個の書き込みユニット
  • ドキュメント ID で 1 KiB のドキュメントを検索し、256 バイトのインデックス エントリで 1 つのフィールドを更新します。消費: 3 書き込みユニット。注: この状況でインデックス エントリを更新すると、2 つの書き込みユニットが消費されます。1 つはインデックス エントリの削除、もう 1 つはインデックス エントリの再作成に使用されます。
  • ドキュメント ID で 1 KiB のドキュメントを見つけて、何も更新しません(変更なし)。消費: 1 書き込みユニット(最小書き込み費用)
  • コレクション内のすべての 1 KiB ドキュメントをクエリして 1, 000 個のドキュメントをスキャンし、コレクションにインデックスのない新しい 256 バイトのフィールドを挿入します。1,000 個の読み取りユニットと 1, 000 個の書き込みユニット。

削除

  • コレクションに 1 つのインデックスがある 1 KiB のドキュメントを削除します。消費: 2 個の書き込みユニット
  • コレクションにインデックスがない 1 KiB のドキュメントを削除します。消費: 1 書き込みユニット

インデックスのビルド

インデックスのビルドでは、ビルド オペレーション中に作成または変更されたインデックス エントリに対して課金されます。これらの費用は、インデックス定義が追加または削除されるたびに発生します。インデックス エントリの課金は、1 KiB あたり 1 書き込みユニットが発生する書き込みと同じです。

  • 500 個のドキュメントを含むコレクションの新しいインデックスを作成します。作成されるインデックス エントリはそれぞれ 1 KiB です。500 個の書き込みユニットを消費します。
  • 500 個のドキュメントを含むコレクションの既存のインデックスを削除します。削除されるインデックス エントリはそれぞれ 1 KiB です。500 個の書き込みユニットを消費します。