ลบข้อมูลหลายรายการพร้อมกัน

คุณสามารถใช้Cloud Firestoreบริการลบข้อมูลจำนวนมากที่มีการจัดการเพื่อลบข้อมูลจากฐานข้อมูลได้ ฟีเจอร์นี้รองรับการลบกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม

หน้านี้จะอธิบายวิธีลบเอกสาร Cloud Firestore หลายรายการพร้อมกันโดยใช้บริการลบหลายรายการพร้อมกันที่มีการจัดการ บริการลบแบบกลุ่มที่มีการจัดการของ Cloud Firestore พร้อมให้ใช้งานผ่านเครื่องมือบรรทัดคำสั่ง gcloud และ Cloud Firestore API (REST, RPC)

ก่อนเริ่มต้น

คุณต้องทํางานต่อไปนี้ให้เสร็จสิ้นก่อนจึงจะใช้บริการลบหลายรายการพร้อมกันที่มีการจัดการได้

  1. เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud เฉพาะโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินเท่านั้นที่จะใช้ฟังก์ชันการลบหลายรายการพร้อมกันได้
  2. ตรวจสอบว่าบัญชีของคุณมีสิทธิ์ที่จําเป็นสําหรับ Cloud Firestore หากเป็นเจ้าของโปรเจ็กต์ บัญชีของคุณจะมีสิทธิ์ที่จำเป็น หรือจะใช้บทบาทต่อไปนี้ที่ให้สิทธิ์ที่จำเป็นสำหรับการดำเนินการลบหลายรายการพร้อมกันก็ได้

    • บทบาทใน Cloud Firestore: Owner, Cloud Datastore Owner หรือ Cloud Datastore Bulk Admin

ตั้งค่า gcloud สําหรับโปรเจ็กต์

คุณเริ่มการลบหลายรายการพร้อมกันได้ผ่านคอนโซล Google Cloud หรือgcloudเครื่องมือบรรทัดคำสั่ง หากต้องการใช้ gcloud ให้ตั้งค่าเครื่องมือบรรทัดคำสั่งและเชื่อมต่อกับโปรเจ็กต์ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

ลบข้อมูลหลายรายการพร้อมกัน

การดำเนินการลบจำนวนมากจะค้นหาเอกสารที่เกี่ยวข้องทั้งหมดในฐานข้อมูลก่อน แล้วลบทีละกลุ่ม คุณยังคงค้นหาหรืออ่านเอกสารเหล่านี้ได้ แต่ผลลัพธ์อาจแตกต่างกันไปตามความคืบหน้า การลบหลายรายการจะไม่ลบเอกสารที่เพิ่มหรือแก้ไขหลังจากการดำเนินการเริ่มต้น

ลบกลุ่มคอลเล็กชันที่เฉพาะเจาะจงเป็นกลุ่ม

gcloud

หากต้องการลบกลุ่มคอลเล็กชันที่เฉพาะเจาะจงหลายกลุ่มพร้อมกัน ให้ใช้ Flag --collection-ids การดำเนินการนี้จะลบเฉพาะกลุ่มคอลเล็กชันที่มีรหัสที่ระบุเท่านั้น กลุ่มคอลเล็กชันจะรวมเอกสารและเอกสารที่ฝังทั้งหมด (ที่เส้นทางใดก็ได้) กับกลุ่มคอลเล็กชันที่ระบุ

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]

ประมาณเวลาที่ใช้ดำเนินการเสร็จสมบูรณ์

คำขอสถานะของการดำเนินการที่ใช้เวลานานจะแสดงเมตริก 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งบประมาณจนกว่าจะดำเนินการเสร็จสมบูรณ์ ในทํานองเดียวกัน การอ่านและการลบที่ดําเนินการระหว่างการลบหลายรายการพร้อมกันจะมีผลกับโควต้า/การใช้งานแบบไม่มีค่าใช้จ่ายหลังจากการดำเนินการเสร็จสมบูรณ์ การดำเนินการลบแบบกลุ่มจะไม่ส่งผลต่อการใช้งานที่แสดงในส่วนการใช้งานของคอนโซล

ดูค่าใช้จ่ายในการลบแบบกลุ่ม

การดำเนินการลบหลายรายการพร้อมกันจะใช้ป้ายกำกับ goog-firestoremanaged:bulkdelete กับการดำเนินการที่มีการเรียกเก็บเงิน ในหน้ารายงานการเรียกเก็บเงินในระบบคลาวด์ คุณสามารถใช้ป้ายกำกับนี้เพื่อดูค่าใช้จ่ายที่เกี่ยวข้องกับการดำเนินการลบหลายรายการพร้อมกัน

แนวทางปฏิบัติแนะนำ

หลีกเลี่ยงการข้ามข้อมูลที่ลบไปแล้ว ซึ่งอาจทำให้การค้นหาช้าลง