料金の例
このページでは、最も一般的なシナリオで課金単位がどのように計算されるかを示します。なお、クエリプラン、データの形状、使用可能なインデックスなどの要因に基づいて、各クエリで処理されるデータが異なる場合があります。
特定のクエリの費用とパフォーマンスを把握するには、クエリの説明機能を使用することをおすすめします。
読み取りオペレーション
ほとんどの読み取りオペレーションでは、特定のドキュメントのポイント読み取りを実行するか、識別子に基づいてデータ範囲をスキャンします。読み取りオペレーションは読み取り単位を消費します。読み取り単位は 4 KiB 単位で計算されます。次の例をご覧ください。
ポイント読み取り
ポイント読み取りの課金例:
- 1 KiB の単一ドキュメントのポイント読み取り。消費: 1 読み取りユニット
- 単一の 4 KiB ドキュメントのポイント読み取り。消費: 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: クエリ費用が適用されます。
- プランのみのオプションを使用する Query Explain。消費: 1 読み取りユニット(クエリの最小コスト)
書き込みオペレーション
書き込みオペレーション(作成、更新、削除)は、オペレーション中に作成、変更、削除されるドキュメントとインデックスのサイズに基づいて課金されます。書き込みオペレーションは書き込みユニットを消費します。書き込み単位は 1 KiB 単位で計算されます。
ドキュメント ID による更新などの単純な書き込みオペレーションでは、書き込みの費用のみが発生します。オペレーションを実行するためにクエリを実行する必要がある書き込みオペレーションでは、クエリに関連する読み取り費用も発生します。
次の例をご覧ください。
作成
- インデックスのない 10 KiB の新しいドキュメントを作成します。消費: 10 書き込みユニット
- コレクションに 256 バイトのインデックス エントリが 1 つある 1 KiB のドキュメントを作成します。消費: 2 書き込みユニット
更新
- ドキュメント ID で 10 KiB のドキュメントを見つけ、コレクションにインデックスなしで更新します。消費: 10 書き込みユニット
- ドキュメント ID で 1 KiB のドキュメントを見つけ、1 つのフィールドを 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 個の書き込みユニットを消費します。