データを一括削除する

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

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

始める前に

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

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

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

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

データを一括削除する

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

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

gcloud

特定のコレクション グループを一括削除するには、 --collection-ids フラグを使用します。 このオペレーションで削除されるのは、既定の ID を持つコレクション グループのみです。

gcloud 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]
たとえば、cymbal データベースの restaurants コレクションにあるレストランを表す複数のドキュメントがあるとします。ratingsreviewsoutlets のコレクションもあります。restaurants コレクションと reviews コレクションを一括削除する場合、コマンドは次のようになります。

gcloud firestore bulk-delete \
--collection-ids=restaurants,reviews \
--database='cymbal'

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

一括削除オペレーションを開始すると、MongoDB 互換の 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 には、オペレーションで処理されるバイト数とドキュメントの合計数の推定値が表示されます。推定できない場合、MongoDB 互換の 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

一括削除オペレーションでは、ドキュメントの読み取りと削除に対して Firestore Enterprise エディションの料金で表示した料金が課金されます

削除されたドキュメント データまたはインデックス エントリデータの 1 KiB のトランシェごとに 1 つの書き込みユニットが課金されます。

削除されたドキュメントごとに、1 件の読み取りユニットが最小で課金されます。ドキュメント名のサイズが 4 KiB を超える場合は、そのドキュメントに対して 4 KiB トランシェごとに 1 つの読み取りユニットが課金されます(切り上げ)。

MongoDB 互換の Firestore では、実際に行われた作業に対して課金されることに注意してください。ユーザー エラーによりオペレーションがキャンセルされた場合や、失敗した場合は、進捗状況に応じて課金されます。MongoDB 互換の Firestore では、最終的に削除されていないドキュメント(削除オペレーションの開始後に変更されたドキュメントなど)の読み取りや削除には課金されません。費用は、オペレーションが完了した日に計上されます。

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

一括削除の費用を確認する

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