データを一括削除する

Cloud Firestore マネージド一括削除サービスを使用して、データベースからデータを削除できます。この機能は、1 つ以上のコレクション グループに対する削除をサポートしています。

このページでは、マネージド一括削除サービスを使用して Cloud Firestore ドキュメントを一括で削除する方法について説明します。Cloud Firestore マネージド一括削除サービスは、gcloud コマンドライン ツールと Cloud Firestore API(RESTRPC)で使用できます。

始める前に

マネージド一括削除サービスを使用するには、次のタスクを完了する必要があります。

  1. Google Cloud プロジェクトに対する課金を有効にします。一括削除機能を使用できるのは、課金が有効になっている Google Cloud プロジェクトのみです。
  2. Cloud Firestore に必要な権限がアカウントにあることを確認してください。プロジェクト オーナーであれば、アカウントに必要な権限が付与されています。 それ以外の場合は、次のロールにより、一括削除オペレーションに必要な権限を付与します。

    • Cloud Firestore ロール: OwnerCloud Datastore Owner、または Cloud Datastore Bulk Admin

プロジェクトの gcloud を設定する

一括削除オペレーションを開始するには、Google Cloud コンソールまたは gcloud コマンドライン ツールを使用します。gcloud を使用する場合は、次のいずれかの方法でコマンドライン ツールを設定し、プロジェクトに接続します。

データを一括削除する

一括削除オペレーションでは、まずデータベース内の該当するドキュメントがすべて検索され、バッチで削除されます。これらのドキュメントは引き続きクエリまたは読み取りできますが、結果は進行状況によって異なる場合があります。一括削除では、オペレーションの開始後に追加または変更されたドキュメントは削除されません。

特定のコレクション グループを一括削除する

gcloud

特定のコレクション グループを一括削除するには、--collection-ids フラグを使用します。このオペレーションでは、指定された ID のコレクション グループのみが削除されます。コレクション グループには、指定されたコレクション グループを持つ、すべてのドキュメントと(任意のパスにある)ネストされたドキュメントが含まれます。

gcloud beta firestore bulk-delete \
--collection-ids=[COLLECTION_GROUP_ID_1_OR_KIND_1],[COLLECTION_GROUP_ID_2_OR_KIND_2],[SUBCOLLECTION_GROUP_ID_1_OR_KIND_3] \
--database=[DATABASE]

一括削除オペレーションを管理する

一括削除オペレーションを開始すると、Cloud Firestore によりオペレーションに一意の名前が割り当てられます。このオペレーション名を使用して、オペレーションの削除、キャンセル、ステータス確認を行うことができます。

次のように、オペレーション名の先頭には projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/ という文字列が付きます。

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

ただし、describecanceldelete コマンドのオペレーション名を指定するときは、接頭辞を省略できます。

すべての一括削除オペレーションを一覧表示する

gcloud

operations list コマンドを使用して、一括削除オペレーションを含む、実行中のオペレーションと最近完了したすべてのオペレーションを表示します。

gcloud firestore operations list

オペレーションのステータスを確認する

gcloud

一括削除オペレーションのステータスを表示するには、operations describe コマンドを使用します。

gcloud firestore operations describe [OPERATION_NAME]

完了時間を予測する

長時間実行オペレーションのステータスをリクエストすると、workEstimated 指標と workCompleted 指標が返されます。これらの指標はバイト数とドキュメント数の両方で返されます。

  • workEstimated には、オペレーションで処理される推定の合計バイト数とドキュメント数が表示されます。推定できない場合、Cloud Firestore はこの指標を省略する可能性があります。

  • workCompleted には、これまでに削除されたバイト数とドキュメント数が表示されます。オペレーションが完了すると、実際に処理された合計バイト数とドキュメント数が表示されます。workEstimated の値よりも大きくなる可能性があります。

進行した割合を大まかに得るには、workCompletedworkEstimated で割ります。最新の統計情報コレクションとの間に遅延があるため、この割合は正確ではない可能性があります。

オペレーションのキャンセル

gcloud

進行中のオペレーションを停止するには、operations cancel コマンドを使用します。

gcloud firestore operations cancel [OPERATION_NAME]

実行中のオペレーションを取り消しても、オペレーション前の状態には戻りません。一括削除をキャンセルしても、削除されたドキュメントは復元されません。

オペレーションを削除する

gcloud firestore operations delete コマンドを使用して、最近のオペレーションのリストから完了したオペレーションを削除します。実行中のオペレーションをキャンセルするには、前のキャンセル オペレーションを使用します。

gcloud firestore operations delete [OPERATION_NAME]

一括削除オペレーションの課金と料金

マネージド一括削除サービスを使用する前に、Google Cloud プロジェクトに対する課金を有効にする必要があります。

一括削除オペレーションでは、ドキュメントの読み取りと削除に対して Cloud Firestore の料金が課金されます。一括削除オペレーションでは、検出されたドキュメントごとに 1 回のインデックス エントリの読み取りと、削除されたドキュメントごとに 1 回の削除オペレーションが発生します。読み取られたインデックス エントリが最大 1,000 個の場合、1 回の読み取りオペレーションとして課金されます。たとえば、1, 500 個のドキュメントを削除した一括削除オペレーションでは、2 回のドキュメントの読み取りと 1, 500 回のドキュメントの削除が課金されます。

Cloud Firestore は、完了した実際の作業に対して課金されます。ユーザーの誤操作によりオペレーションがキャンセルされた場合や失敗した場合は、進捗状況に応じて課金されます。Cloud Firestore では、最終的に削除されないドキュメント(削除オペレーションの開始後に変更されたドキュメントなど)の読み取りや削除は課金されません。費用は、オペレーションの完了日に関連付けられます。

一括削除オペレーションが完了するまで、Google Cloud の予算アラートはトリガーされません。同様に、一括削除オペレーションの実行中に行われた読み取りと削除は、オペレーションが完了してから無料の割り当て/使用量に適用されます。一括削除オペレーションは、コンソールの使用状況セクションに表示される使用量には影響しません。

一括削除の費用を表示する

一括削除オペレーションでは、課金対象のオペレーションに goog-firestoremanaged:bulkdelete ラベルが適用されます。一括削除オペレーションに関連する費用を表示するには、Cloud Billing レポートのページで、このラベルを使用します。

ベスト プラクティス

削除されたデータをスキップするようなクエリを避ける。クエリの速度が低下する可能性があります。