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