Datastore モードの Firestore の料金
このドキュメントでは、Datastore モードの料金について詳しく説明します。
無料の使用量
Datastore モードの Firestore では、費用をかけずに使い始めていただくために、無料の使用量が用意されています。無料の割り当ての上限を超過する場合は、プロジェクトに対する課金を有効にする必要があります。
使用量は毎日カウントされ、太平洋時間の深夜 0 時頃にリセットされます。
| 無料の使用量 | |
|---|---|
| エンティティの読み取り | 50,000/日 |
| エンティティの書き込み | 20,000/日 |
| エンティティの削除 | 20,000/日 |
| 保存データ | 1 GiB |
| 小規模なオペレーション | 50,000/日 |
| 送信データ転送 | 10 GiB/月 |
次のオペレーションと機能には、無料の使用量は含まれていません。次の機能を使用するには、課金を有効にする必要があります。
- PITR データ
- データのバックアップ
- 復元オペレーション
- クローンオペレーション
- TTL
これらの機能に対する課金の詳細については、ストレージ サイズの考慮事項をご覧ください。
地域別の料金
Datastore モードの利用ロケーションごとの読み取り、書き込み、削除、保存の料金については、 Firestore の料金をご覧ください。
読み取りオペレーション
読み取られたエンティティごとに 1 回の読み取りオペレーションとして課金され、読み取られた最大 1,000 個のインデックス エントリのバッチごとに 1 回の読み取りオペレーションとして課金されます。
インデックス エントリの数
クエリによって読み取られた最大 1,000 個のインデックス エントリのバッチごとに 1 回の読み取りオペレーションとして課金されます。ただし、次の場合には課金されません。
範囲プロパティが 1 つ以下のクエリでは、インデックス エントリの読み取りに対して課金されず、最低料金は 0 回の読み取りオペレーションです。インデックス エントリの読み取りが課金されるタイミングを理解するために、次の例を使用してください。次に、Query Explain の billing_details セクションを使用して、理解度を確認します。
次のクエリには、1 つの等式プロパティ(age)と 1 つの範囲プロパティ(start_date)が含まれており、インデックス エントリの読み取りに対して課金されません。
Query<Entity> query =
Query.newEntityQueryBuilder()
.setKind("Employee")
.setFilter(
CompositeFilter.and(
PropertyFilter.eq("age", 35), PropertyFilter.ge("start_date", new Date(2020, 1, 1))))
.build();
次のクエリには 2 つの範囲プロパティ(age と start_date)が含まれており、インデックス エントリの読み取りに対して課金されます。
Query<Entity> query =
Query.newEntityQueryBuilder()
.setKind("Employee")
.setFilter(
CompositeFilter.and(
PropertyFilter.ge("age", 35), PropertyFilter.ge("start_date", new Date(2020, 1, 1))))
.build();
order by 句で表示されるプロパティは、他の範囲プロパティが 1 つ以上ある場合、範囲プロパティと見なされます。したがって、次のクエリには 2 つの範囲プロパティ(age と start_date)が含まれており、インデックス エントリの読み取りに対して課金されます。
Query<Entity> query =
Query.newEntityQueryBuilder()
.setKind("Employee")
.setFilter(PropertyFilter.ge("age", 35))
.setOrderBy(OrderBy.asc("start_date")).build()
.build();
distinct on 句に表示されるプロパティは、他の範囲プロパティが 1 つ以上ある場合、範囲プロパティと見なされます。したがって、次のクエリには 2 つの範囲プロパティ(age と start_date)が含まれており、インデックス エントリの読み取りに対して課金されます。
Query<Entity> query =
Query.newEntityQueryBuilder()
.setKind("Employee")
.setFilter(PropertyFilter.ge("age", 35))
.setDistinctOn("start_date")
.build();
集約クエリ
集計クエリ count()、sum()、avg() の場合、クエリによって読み取られたインデックス エントリのバッチ(1,000 個まで)ごとに 1 回のエンティティの読み取りとして課金されます。
たとえば、0 ~ 1, 000 個のインデックス エントリを読み取る集計クエリは、1 回のエンティティの読み取りとして課金されます。1, 500 個のインデックス エントリを読み取る集計クエリは、2 回のエンティティの読み取りとして課金されます。
使用するインデックスと読み取るインデックス エントリの詳細については、クエリの説明をご覧ください。
プロパティの変換
increment や appendMissingElements などのプロパティ変換
オペレーションは、読み取りと書き込みに対して課金されます。同じエンティティに対する挿入、更新、または upsert とプロパティ変換を伴う commit オペレーションは、1 回の読み取りと 1 回の書き込みとしてカウントされます。
小規模なオペレーション
小規模オペレーションには、以下が含まれます。
- ID を割り当てるための呼び出し。
- キーのみのクエリ。キーのみのクエリは、クエリ自体については、1 回のエンティティ読み取りとしてカウントされます。個々の結果は小規模オペレーションとしてカウントされます。
distinct on句を使用しない射影クエリ。このタイプのクエリは、クエリ自体については、1 回のエンティティ読み取りとしてカウントされます。個々の結果は小規模オペレーションとしてカウントされます。
小規模オペレーションは無料ですが、1 日の無料割り当てを超える分の請求を有効にする必要があります。
Query Explain と分析
Query Explain と Query Analyze を使用すると、費用が発生します。
クエリがデフォルト オプションで説明されると、インデックス オペレーションやエンティティの読み取りオペレーションは実行されません。クエリの複雑さに関係なく、1 回の読み取りオペレーションが課金されます。
クエリが分析オプションで説明されると、インデックス オペレーションと読み取りオペレーションが実行されるため、通常のクエリに対する料金が発生します。説明と分析のアクティビティに追加料金はかからず、実行されるクエリに対する通常の料金のみがかかります。
ネットワーク帯域幅
以下のセクションで説明するように、Datastore モードの Firestore のリクエストによって使用されるネットワーク帯域幅に対して課金が発生します。リクエストされたネットワーク帯域幅の費用は、リクエストのレスポンスのサイズ、Datastore モードのデータベースの場所、レスポンスの送信先によって異なります。
一般的なネットワークの料金体系
Google Cloud Platform 内で発生したリクエスト(Google Compute Engine で実行中のアプリケーションからのリクエストなど)については、次の課金が発生します。
| トラフィックの種類 | 料金 |
|---|---|
| インバウンド データ転送 | 無料 |
| リージョン内のデータ転送 | 無料 |
| 同一マルチリージョン内のリージョン間のデータ転送 | 無料 |
| 米国内のリージョン間のデータ転送(GiB あたり) | $0.01(月ごとの最初の 10 GiB は無料です) |
| リージョン間のデータ転送(米国のリージョン間のトラフィックは除く) | Google Cloud Platform インターネット送信データ転送料金 |
米ドル以外の通貨でお支払いの場合は、Cloud Platform SKU に記載されている該当通貨の料金が適用されます。
インターネット データ転送料金
以下のインターネット データ転送に対して課金されます。
- リージョン間のGoogle Cloud リクエスト(米国のリージョン間のトラフィックは除く)
- Google Cloudの外部からのリクエスト
米ドル以外の通貨でお支払いの場合は、Cloud Platform SKU に記載されている該当通貨の料金が適用されます。
エクスポートとインポートのオペレーション
エクスポート オペレーションとインポート オペレーションでは、エンティティの読み取りと書き込みに対して上の表に示す料金が課金されます。エクスポートまたはインポートをキャンセルすると、キャンセル リクエストが Datastore モードの Firestore に伝播されるまでの間に実行されたオペレーションに対して課金されます。
アプリケーションに対する割り当て量使用情報の確認
割り当ての使用状況など、アプリケーションによる Datastore モードの使用量を確認するには、App Engine の割り当ての詳細ページをご覧ください。この手順は、アプリケーションが App Engine 内で実行されていない場合でも必要です。
アプリケーションが使用した Datastore モードのリソースは、表示されるストレージ ページにリストされます。また、[使用されていないリソースを表示する] をクリックすると、使用可能なすべての割り当ての情報が一覧表示されます。
ストレージ サイズに関する考慮事項
Datastore モードに保存するデータの容量(ストレージ オーバーヘッドを含む)に対して課金されます。オーバーヘッドの容量には、メタデータ、組み込みインデックス、複合インデックス、ポイントインタイム リカバリ(PITR)バージョンが含まれます。バックアップのストレージ サイズと復元オペレーションにも課金されます。
データベースに保存される個々のエンティティには、以下のメタデータが必要です。これらはストレージ サイズに影響します。
- エンティティ キー。種類、ID またはキー名、エンティティの祖先のキーを含みます。
- 各プロパティの名前と値。Datastore モードの Firestore はスキーマレスなので、あらゆるエンティティについて各プロパティの名前をそのプロパティの値とともに保存する必要があります。
- このエンティティを参照するすべての組み込みインデックス行と複合インデックス行。個々の行には、エンティティの種類、任意の数のプロパティ値(インデックスの定義によって異なる)、エンティティ キーが含まれます。
Datastore モードのストレージの計算方法については、ストレージ サイズの計算をご覧ください。
PITR データ
PITR を有効にすると、PITR データのストレージに対して課金されます。ほとんどのお客様は、PiTR データ ストレージの全体的な費用がデータベースのストレージ費用と同程度になります。
PITR のストレージ費用は GiB/月単位で、毎日計算されます。Datastore モードでは、データベースのサイズが毎日測定されます。サンプル ポイントの1か月平均をとってデータベースのストレージ サイズを計算します。この平均値に PITR の単価(GiB-月)を掛けます。
たとえば、1 か月間のデータベースの平均サイズが 1 GiB で、PITR が 1 か月間有効になっている場合、課金対象の PITR データサイズも 1 GiB になります。
最低請求金額: PITR を有効にしてから 1 日以内に無効にしても、最大 1 日の PITR ストレージ料金が請求されることがあります。
データのバックアップと復元オペレーション
backupsを有効にすると、データベース バックアップのストレージに対して課金されます。バックアップのストレージ サイズは、バックアップを作成したときのデータベースのストレージ サイズと同じです。
バックアップのストレージ費用は GiB/月単位で示されます。各バックアップが保持される日数も、1 か月平均をとって計算されます。各バックアップの費用は、バックアップのストレージ サイズにバックアップが保持されている月の割合を掛け、それに単価を掛けて算出されます。請求に関する 1 日の境界は、America/Los_Angeles タイムゾーンで定義されます。
復元オペレーションを実行すると、Datastore モードでは復元オペレーションの対象となるバックアップのサイズが測定されます。バックアップのサイズに復元オペレーションの単価(GiB)を掛けます。
次のステップ
- Datastore モードの Firestore のドキュメントを読む。
- Datastore モードの Firestore を使ってみる。
- 料金計算ツールを試す。
- Datastore モードの Firestore のソリューションとユースケース について学習する。