ใช้บริการลบข้อมูลแบบกลุ่มที่มีการจัดการเพื่อลบข้อมูลจากฐานข้อมูล ฟีเจอร์นี้รองรับการลบข้อมูลจากกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม
หน้านี้อธิบายวิธีลบเอกสารแบบกลุ่มโดยใช้บริการลบข้อมูลแบบกลุ่มที่มีการจัดการ บริการลบข้อมูลแบบกลุ่มที่มีการจัดการของ Cloud Firestore พร้อมใช้งานผ่านเครื่องมือบรรทัดคำสั่ง gcloudและ Cloud Firestore REST API
ก่อนเริ่มต้น
คุณต้องทำตามงานต่อไปนี้ให้เสร็จสมบูรณ์ก่อนจึงจะใช้บริการลบข้อมูลแบบกลุ่มที่มีการจัดการได้
- หากต้องการลบเอกสารแบบกลุ่ม ให้เปิดใช้ การเรียกเก็บเงินสำหรับโปรเจ็กต์Google Cloud เฉพาะ Google Cloud โปรเจ็กต์ที่เปิดใช้การเรียกเก็บเงินเท่านั้นที่จะใช้ฟังก์ชันการลบแบบกลุ่มได้
-
ตรวจสอบว่าบัญชีของคุณมีสิทธิ์ที่จำเป็นสำหรับ Cloud Firestore. หากคุณเป็นเจ้าของโปรเจ็กต์ บัญชีของคุณจะมีสิทธิ์ที่จำเป็น มิเช่นนั้น บทบาทต่อไปนี้ จะให้สิทธิ์ที่จำเป็นสำหรับการดำเนินการลบแบบกลุ่ม
- Cloud Firestore บทบาท:
Owner,Cloud Datastore Owner, หรือCloud Datastore Bulk Admin
- Cloud Firestore บทบาท:
ตั้งค่า gcloud สำหรับโปรเจ็กต์
คุณเริ่มการดำเนินการลบแบบกลุ่มได้ผ่านคอนโซล Google Cloud หรือเครื่องมือบรรทัดคำสั่ง gcloud หากต้องการใช้ gcloud ให้ตั้งค่าเครื่องมือบรรทัดคำสั่งและเชื่อมต่อกับโปรเจ็กต์ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
เข้าถึง
gcloudจากคอนโซล Google Cloud โดยใช้ Cloud Shellตรวจสอบว่าได้กำหนดค่า
gcloudสำหรับโปรเจ็กต์ที่ถูกต้องแล้ว โดยทำดังนี้gcloud config set project [PROJECT_ID]
ลบข้อมูลแบบกลุ่ม
การดำเนินการลบแบบกลุ่มจะค้นหาเอกสารที่เกี่ยวข้องทั้งหมดในฐานข้อมูลก่อน แล้วจึงลบเอกสารเหล่านั้นเป็นชุดๆ คุณยังคงค้นหาหรืออ่านเอกสารเหล่านี้ได้ แต่ผลลัพธ์อาจแตกต่างกันไปตามความคืบหน้า การลบแบบกลุ่มจะไม่ลบเอกสารที่เพิ่มหรือแก้ไขหลังจากเริ่มการดำเนินการ
ลบกลุ่มคอลเล็กชันที่เฉพาะเจาะจงแบบกลุ่ม
gcloud
หากต้องการลบกลุ่มคอลเล็กชันที่เฉพาะเจาะจงแบบกลุ่ม ให้ใช้แฟล็ก
--collection-ids
การดำเนินการจะลบเฉพาะกลุ่มคอลเล็กชันที่มีรหัสที่ระบุ
กลุ่มคอลเล็กชันประกอบด้วยเอกสารทั้งหมดและเอกสารแบบซ้อน (ในเส้นทางใดก็ได้) ที่มีกลุ่มคอลเล็กชันที่ระบุ
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]
restaurants ระดับบนสุดของฐานข้อมูล cymbal เอกสารร้านอาหารแต่ละรายการจะมีคอลเล็กชันย่อยแบบซ้อนหลายรายการ เช่น ratings, reviews และ outlets หากต้องการลบกลุ่มคอลเล็กชัน restaurants และ reviews แบบกลุ่ม คำสั่งของคุณจะมีลักษณะดังนี้
gcloud firestore bulk-delete \ --collection-ids=restaurants,reviews \ --database='cymbal'
จัดการการดำเนินการลบแบบกลุ่ม
หลังจากที่คุณเริ่มการดำเนินการลบแบบกลุ่ม 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]
ประมาณเวลาที่ใช้ในการดำเนินการให้เสร็จสมบูรณ์
คำขอสถานะของการดำเนินการที่ใช้เวลานานจะแสดงผลเมตริก workEstimated และ workCompleted โดยเมตริกแต่ละรายการจะแสดงผลเป็นทั้งจำนวนไบต์และจำนวนเอกสาร ดังนี้
workEstimatedแสดงจำนวนไบต์และเอกสารทั้งหมดโดยประมาณที่การดำเนินการจะประมวลผล Cloud Firestore อาจละเว้นเมตริกนี้หาก ประมาณไม่ได้workCompletedแสดงจำนวนไบต์และเอกสารที่ลบไปแล้ว หลังจากที่การดำเนินการเสร็จสมบูรณ์ ค่าจะแสดงจำนวนไบต์และเอกสารทั้งหมดที่ประมวลผลจริง ซึ่งอาจมากกว่าค่าของworkEstimated
นำ workCompleted มาหารด้วย workEstimated เพื่อประมาณความคืบหน้าคร่าวๆ การประมาณนี้อาจไม่ถูกต้องเนื่องจากขึ้นอยู่กับการรวบรวมสถิติที่ล่าช้า
ยกเลิกการดำเนินการ
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 ครั้งต่อรายการดัชนีที่อ่านสูงสุด 1,000 รายการ ตัวอย่างเช่น สำหรับการดำเนินการลบแบบกลุ่มที่ลบเอกสาร 1, 500 รายการ ระบบจะเรียกเก็บเงินสำหรับการอ่านเอกสาร 2 ครั้งและการลบเอกสาร 1, 500 ครั้งโปรดทราบว่า Cloud Firestore จะเรียกเก็บเงินตามงานที่ทำจริง หากการดำเนินการถูกยกเลิกหรือล้มเหลวเนื่องจากข้อผิดพลาดของผู้ใช้ ระบบจะเรียกเก็บเงินตามความคืบหน้า Cloud Firestore จะไม่เรียกเก็บเงินสำหรับการอ่านหรือลบสำหรับ เอกสารที่ไม่ได้ลบในที่สุด เช่น เอกสารที่ แก้ไขหลังจากเริ่มการดำเนินการลบ ระบบจะระบุค่าใช้จ่ายในวันที่การดำเนินการเสร็จสมบูรณ์
การดำเนินการลบแบบกลุ่มจะไม่ทริกเกอร์การแจ้งเตือนGoogle Cloudงบประมาณ ของคุณใน Google Cloud จนกว่าจะเสร็จสมบูรณ์ ในทำนองเดียวกัน การอ่านและการลบที่ดำเนินการระหว่างการดำเนินการลบแบบกลุ่มจะนำไปใช้กับการใช้งานระดับฟรีหลังจากที่การดำเนินการเสร็จสมบูรณ์ การดำเนินการลบแบบกลุ่มจะไม่ส่งผลต่อการใช้งานที่แสดงในส่วนการใช้งานของคอนโซล
ดูค่าใช้จ่ายในการลบแบบกลุ่ม
การดำเนินการลบแบบกลุ่มจะใช้ป้ายกำกับ goog-firestoremanaged:bulkdelete กับการดำเนินการที่เรียกเก็บเงิน ในหน้า รายงานการเรียกเก็บเงินใน Cloud
คุณสามารถใช้ป้ายกำกับนี้เพื่อดูค่าใช้จ่ายที่เกี่ยวข้องกับการดำเนินการลบแบบกลุ่ม
แนวทางปฏิบัติแนะนำ
หลีกเลี่ยงการข้ามข้อมูลที่ลบไปแล้ว ซึ่งอาจทำให้การค้นหา ช้าลง