คุณสามารถใช้Cloud Firestoreบริการลบข้อมูลจำนวนมากที่มีการจัดการเพื่อลบข้อมูลจากฐานข้อมูลได้ ฟีเจอร์นี้รองรับการลบกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม
หน้านี้จะอธิบายวิธีลบเอกสาร Cloud Firestore หลายรายการพร้อมกันโดยใช้บริการลบหลายรายการพร้อมกันที่มีการจัดการ บริการลบแบบกลุ่มที่มีการจัดการของ Cloud Firestore พร้อมให้ใช้งานผ่านเครื่องมือบรรทัดคำสั่ง gcloud
และ Cloud Firestore API (REST, RPC)
ก่อนเริ่มต้น
คุณต้องทํางานต่อไปนี้ให้เสร็จสิ้นก่อนจึงจะใช้บริการลบหลายรายการพร้อมกันที่มีการจัดการได้
- เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ 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
หากต้องการลบกลุ่มคอลเล็กชันที่เฉพาะเจาะจงหลายกลุ่มพร้อมกัน ให้ใช้ 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
กับการดำเนินการที่มีการเรียกเก็บเงิน ในหน้ารายงานการเรียกเก็บเงินในระบบคลาวด์ คุณสามารถใช้ป้ายกำกับนี้เพื่อดูค่าใช้จ่ายที่เกี่ยวข้องกับการดำเนินการลบหลายรายการพร้อมกัน
แนวทางปฏิบัติแนะนำ
หลีกเลี่ยงการข้ามข้อมูลที่ลบไปแล้ว ซึ่งอาจทำให้การค้นหาช้าลง