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