Xoá dữ liệu hàng loạt

Bạn có thể sử dụng dịch vụ xoá hàng loạt được quản lý của Cloud Firestore để xoá dữ liệu khỏi cơ sở dữ liệu của mình. Tính năng này hỗ trợ xoá một hoặc nhiều nhóm bộ sưu tập.

Trang này mô tả cách xoá hàng loạt tài liệu Cloud Firestore bằng cách sử dụng dịch vụ xoá hàng loạt được quản lý. Dịch vụ xoá hàng loạt do Cloud Firestore quản lý có sẵn thông qua công cụ dòng lệnh gcloud và API Cloud Firestore (REST, RPC).

Trước khi bắt đầu

Để có thể sử dụng dịch vụ xoá hàng loạt có quản lý, bạn phải hoàn tất các nhiệm vụ sau:

  1. Bật tính năng thanh toán cho dự án Google Cloud của bạn. Chỉ những dự án Google Cloud đã bật tính năng thanh toán mới có thể sử dụng chức năng xoá hàng loạt.
  2. Đảm bảo rằng tài khoản của bạn có các quyền cần thiết cho Cloud Firestore. Nếu bạn là chủ sở hữu dự án, thì tài khoản của bạn sẽ có các quyền cần thiết. Nếu không, các vai trò sau đây sẽ cấp các quyền cần thiết cho các thao tác xoá hàng loạt:

    • Vai trò Cloud Firestore: Owner, Cloud Datastore Owner hoặc Cloud Datastore Bulk Admin

Thiết lập gcloud cho dự án

Bạn có thể bắt đầu các thao tác xoá hàng loạt thông qua bảng điều khiển Google Cloud hoặc công cụ dòng lệnh gcloud. Để sử dụng gcloud, hãy thiết lập công cụ dòng lệnh và kết nối với dự án theo một trong những cách sau:

Xoá hàng loạt dữ liệu

Trước tiên, thao tác xoá hàng loạt sẽ tìm tất cả tài liệu có thể áp dụng trong cơ sở dữ liệu của bạn và xoá chúng theo lô. Bạn vẫn có thể truy vấn hoặc đọc các tài liệu này trong khi kết quả có thể thay đổi dựa trên tiến trình đã thực hiện. Thao tác xoá hàng loạt sẽ không xoá bất kỳ tài liệu nào được thêm hoặc sửa đổi sau khi thao tác bắt đầu.

Xoá hàng loạt các nhóm bộ sưu tập cụ thể

gcloud

Để xoá hàng loạt các nhóm bộ sưu tập cụ thể, hãy sử dụng cờ --collection-ids. Thao tác này chỉ xoá các nhóm bộ sưu tập có mã nhận dạng đã cho. Một nhóm bộ sưu tập bao gồm tất cả tài liệu và tài liệu lồng nhau (ở bất kỳ đường dẫn nào) với các nhóm bộ sưu tập được chỉ định.

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]

Quản lý thao tác xoá hàng loạt

Sau khi bạn bắt đầu một thao tác xoá hàng loạt, Cloud Firestore sẽ chỉ định một tên duy nhất cho thao tác đó. Bạn có thể sử dụng tên thao tác để xoá, huỷ hoặc kiểm tra trạng thái của thao tác.

Tên toán tử có tiền tố là projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/, ví dụ:

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

Tuy nhiên, bạn có thể bỏ tiền tố này khi chỉ định tên thao tác cho các lệnh describe, canceldelete.

Liệt kê tất cả thao tác xoá hàng loạt

gcloud

Sử dụng lệnh operations list để xem tất cả các thao tác đang chạy và các thao tác đã hoàn tất gần đây, bao gồm cả thao tác xoá hàng loạt:

gcloud firestore operations list

Kiểm tra trạng thái hoạt động

gcloud

Sử dụng lệnh operations describe để hiển thị trạng thái của thao tác xoá hàng loạt.

gcloud firestore operations describe [OPERATION_NAME]

Ước tính thời gian hoàn thành

Yêu cầu về trạng thái của một thao tác chạy trong thời gian dài sẽ trả về các chỉ số workEstimatedworkCompleted. Mỗi chỉ số này được trả về theo cả số byte và số tài liệu:

  • workEstimated cho biết tổng số byte và tài liệu ước tính mà một thao tác sẽ xử lý. Cloud Firestore có thể bỏ qua chỉ số này nếu không thể ước tính.

  • workCompleted cho biết số byte và số tài liệu đã xoá tính đến thời điểm hiện tại. Sau khi thao tác hoàn tất, giá trị này sẽ cho biết tổng số byte và tài liệu thực sự được xử lý. Giá trị này có thể lớn hơn giá trị của workEstimated.

Chia workCompleted cho workEstimated để ước tính tiến trình một cách tương đối. Số liệu ước tính này có thể không chính xác vì nó phụ thuộc vào việc thu thập số liệu thống kê bị trễ.

Huỷ thao tác

gcloud

Sử dụng lệnh operations cancel để dừng một thao tác đang diễn ra:

gcloud firestore operations cancel [OPERATION_NAME]

Việc huỷ một thao tác đang chạy sẽ không huỷ thao tác đó. Thao tác xoá hàng loạt bị huỷ sẽ không khôi phục các tài liệu đã xoá.

Xoá một thao tác

Sử dụng lệnh gcloud firestore operations delete để xoá một thao tác đã hoàn tất khỏi danh sách thao tác gần đây. Để huỷ một thao tác đang chạy, hãy sử dụng thao tác huỷ trước đó.

gcloud firestore operations delete [OPERATION_NAME]

Thông tin thanh toán và giá cho các thao tác xoá hàng loạt

Bạn phải bật tính năng thanh toán cho dự án Google Cloud trước khi sử dụng dịch vụ xoá hàng loạt được quản lý.

Các thao tác xoá hàng loạt sẽ được tính phí cho việc đọc và xoá tài liệu theo mức giá nêu trong phần Giá Cloud Firestore. Thao tác xoá hàng loạt sẽ thực hiện một lượt đọc mục nhập chỉ mục cho mỗi tài liệu được tìm thấy và một thao tác xoá cho mỗi tài liệu bị xoá. Bạn bị tính phí cho một thao tác đọc cho tối đa 1000 mục nhập chỉ mục được đọc. Ví dụ: đối với thao tác xoá hàng loạt đã xoá 1500 tài liệu, bạn sẽ bị tính phí 2 lượt đọc tài liệu và 1500 lượt xoá tài liệu.

Xin lưu ý rằng Cloud Firestore tính phí dựa trên công việc thực tế đã thực hiện. Nếu thao tác bị huỷ hoặc không thành công do lỗi của người dùng, bạn sẽ được tính phí theo tiến trình đã thực hiện. Cloud Firestore sẽ không tính phí đọc hoặc xoá đối với những tài liệu không bị xoá (ví dụ: tài liệu được sửa đổi sau khi bắt đầu thao tác xoá). Chi phí này sẽ được phân bổ vào ngày hoàn tất thao tác.

Các thao tác xoá hàng loạt sẽ không kích hoạt cảnh báo ngân sách Google Cloud cho đến khi hoàn tất. Tương tự, các thao tác đọc và xoá được thực hiện trong quá trình xoá hàng loạt sẽ được áp dụng cho hạn mức/mức sử dụng miễn phí sau khi thao tác hoàn tất. Các thao tác xoá hàng loạt sẽ không ảnh hưởng đến mức sử dụng hiển thị trong phần sử dụng của bảng điều khiển.

Xem chi phí xoá hàng loạt

Thao tác xoá hàng loạt sẽ áp dụng nhãn goog-firestoremanaged:bulkdelete cho các thao tác được tính phí. Trên trang báo cáo của Cloud Billing, bạn có thể sử dụng nhãn này để xem các chi phí liên quan đến thao tác xoá hàng loạt.

Các phương pháp hay nhất

Tránh bỏ qua dữ liệu đã xoá vì việc này có thể làm chậm tốc độ truy vấn.