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

ใช้บริการลบข้อมูลเป็นกลุ่มที่มีการจัดการเพื่อลบข้อมูลออกจากฐานข้อมูล ฟีเจอร์นี้รองรับการลบกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม

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

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

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

  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 การดำเนินการ จะลบเฉพาะกลุ่มคอลเล็กชันที่มีรหัสที่ระบุ กลุ่มคอลเล็กชันประกอบด้วยเอกสารทั้งหมดและเอกสารที่ซ้อนกัน (ในเส้นทางใดก็ได้) ที่มีกลุ่มคอลเล็กชันที่ระบุ

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

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

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

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

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