データを一括削除する

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 レポートのページで、このラベルを使用します。

ベスト プラクティス

削除されたデータの読み飛ばしを避ける。クエリの速度が低下する可能性があります。