데이터 일괄 삭제

Cloud Firestore 관리형 일괄 삭제 서비스를 사용하여 데이터베이스에서 데이터를 삭제할 수 있습니다. 이 기능은 하나 이상의 컬렉션 그룹에 대한 삭제를 지원합니다.

이 페이지에서는 관리형 일괄 삭제 서비스를 사용하여 Cloud Firestore 문서를 일괄 삭제하는 방법을 설명합니다. gcloud 명령줄 도구 및 Cloud Firestore API(REST, RPC)를 통해 Cloud Firestore 관리형 일괄 삭제 서비스를 사용할 수 있습니다.

시작하기 전에

관리형 일괄 삭제 서비스를 사용하려면 먼저 다음 작업을 완료해야 합니다.

  1. Google Cloud 프로젝트에 결제를 사용 설정합니다. 결제가 사용 설정된 Google Cloud 프로젝트만 일괄 삭제 기능을 사용할 수 있습니다.
  2. 계정에 Cloud Firestore에 필요한 권한이 있는지 확인합니다. 프로젝트 소유자인 계정에는 필요한 권한이 있습니다. 그렇지 않은 경우 다음 역할은 일괄 삭제 작업에 필요한 권한을 부여합니다.

    • Cloud Firestore 역할: Owner, Cloud 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

describe, cancel, delete 명령어에 작업 이름을 지정할 때 프리픽스는 제외할 수 있습니다.

모든 일괄 삭제 작업 나열

gcloud

operations list 명령어를 사용하여 일괄 삭제 작업을 비롯한 모든 실행 중인 작업과 최근에 완료된 작업을 확인합니다.

gcloud firestore operations list

작업 상태 확인

gcloud

operations describe 명령어를 사용하여 일괄 삭제 작업의 상태를 표시합니다.

gcloud firestore operations describe [OPERATION_NAME]

완료 시간 예상

장기 실행 작업의 상태를 요청하면 workEstimatedworkCompleted 측정항목이 반환됩니다. 이러한 각 측정항목은 바이트 수와 문서 수 단위로 반환됩니다.

  • 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 보고서 페이지에서 이 라벨을 사용하여 일괄 삭제 작업과 관련된 비용을 볼 수 있습니다.

권장사항

쿼리 속도가 느려질 수 있으므로 삭제된 데이터를 건너뛰지 마세요.