จัดการการเก็บรักษาข้อมูลด้วยนโยบาย TTL

หน้านี้จะอธิบายวิธีใช้คอนโซล Google Cloud Platform และ Google Cloud CLI เพื่อกำหนดค่านโยบาย Time to Live (TTL) ก่อนที่คุณจะอ่านหน้านี้ คุณควรทำความเข้าใจ โมเดลข้อมูล Cloud Firestore

ภาพรวม Time to Live

ใช้นโยบาย TTL เพื่อดำเนินการอัตโนมัติ นำข้อมูลที่ไม่มีการอัปเดตออกจากฐานข้อมูล นโยบาย TTL จะกำหนดฟิลด์ที่ระบุเป็น เวลาหมดอายุสำหรับเอกสารในกลุ่มคอลเล็กชันที่ระบุ TTL ช่วยให้คุณทำสิ่งต่อไปนี้ได้ ลดต้นทุนในการจัดเก็บข้อมูลโดยการล้างข้อมูลที่ล้าสมัย ปกติแล้วข้อมูลจะถูกลบ ภายใน 24 ชั่วโมงหลังจากวันที่หมดอายุ

ราคา

การดำเนินการลบ TTL จะนับรวมอยู่ในค่าใช้จ่ายการลบเอกสาร สำหรับราคา ของการดำเนินการลบ โปรดดูราคาของ Cloud Firestore

ข้อจำกัดและข้อจำกัด

  • ทำเครื่องหมายช่องเป็นช่อง TTL ได้เพียง 1 ช่องต่อกลุ่มคอลเล็กชัน
  • อนุญาตให้มีการกำหนดค่าระดับช่องทั้งหมด 200 รายการ การกำหนดค่า 1 ช่อง อาจมีการกำหนดค่าได้หลายรายการสำหรับช่องเดียวกัน ตัวอย่างเช่น การยกเว้นการจัดทำดัชนีช่องเดียวและนโยบาย TTL ในช่องเดียวกันจะนับเป็น 1 ช่องให้อยู่ภายในขีดจำกัด
  • สำหรับลูกค้า Firestore ในโหมด Datastore คุณจะใช้ TTL กับโหมดการเกิดขึ้นพร้อมกันของ ไม่ได้ เพิ่มประสิทธิภาพด้วยกลุ่มเอนทิตี ลองเปลี่ยนโหมดการเกิดขึ้นพร้อมกันเป็นโหมดการเกิดขึ้นพร้อมกันอย่างเหมาะสม

การลบ TTL

โปรดดูลักษณะการทำงานของคีย์ต่อไปนี้สำหรับการลบที่ขับเคลื่อนด้วย TTL

  • การลบผ่าน TTL ไม่ได้เป็นกระบวนการที่เกิดขึ้นทันที เอกสารหมดอายุ ยังปรากฏในการค้นหาและคำขอค้นหาต่อไปจนกว่ากระบวนการ TTL จะลบออกไปจริงๆ TTL แลกเปลี่ยนลำดับเวลาการลบเพื่อประโยชน์ของ ลดต้นทุนรวมในการเป็นเจ้าของการลบ ปกติแล้วข้อมูลจะถูกลบภายใน 24 ชั่วโมงหลังจากวันที่หมดอายุ

  • การลบเอกสารผ่าน TTL จะไม่ลบคอลเล็กชันย่อยที่อยู่ภายใต้ เอกสาร

  • การใช้นโยบาย TTL กับกลุ่มคอลเล็กชันที่มีอยู่จะทำให้เกิดการดำเนินการแบบกลุ่ม การลบข้อมูลที่หมดอายุทั้งหมดตามนโยบาย TTL ใหม่ หมายเหตุ การลบจำนวนมากนี้ก็ไม่ได้เกิดขึ้นทันทีเช่นกัน และขึ้นอยู่กับปริมาณข้อมูล สำหรับกลุ่มคอลเล็กชันนั้น

  • หากเอกสารมีเวลาหมดอายุในอดีตและคุณเพิ่มนโยบาย TTL ใหม่ เอกสารนั้นจะถูกลบภายใน 24 ชั่วโมง เมื่อนโยบาย TTL ตั้งค่าเสร็จและใช้งานได้

  • TTL ไม่จำเป็นต้องลบเอกสารในลำดับเดียวกับ การประทับเวลาวันหมดอายุ

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

  • Cloud Firestore จะใช้ช่อง TTL ล่าสุดเสมอเพื่อระบุ วันหมดอายุ ตัวอย่างเช่น หากเอกสารที่หมดอายุแล้วแต่ยังไม่ถูกลบมีเอกสาร อัปเดตฟิลด์ TTL เป็นวันที่หลังจากนี้ เอกสารจะไม่หมดอายุและ วันที่ใหม่จะถูกใช้

  • TTL ออกแบบมาเพื่อลดผลกระทบต่อกิจกรรมฐานข้อมูลอื่นๆ การลบ ซึ่งขับเคลื่อนโดย TTL จะมีลำดับความสำคัญต่ำกว่า กลยุทธ์อื่นๆ ได้แก่ นอกจากนี้ยังช่วยขจัดปริมาณการรับส่งข้อมูลที่เพิ่มขึ้นอย่างรวดเร็วจากการลบที่ทำงานด้วย TTL ด้วย

  • การลบผ่านการเรียกใช้ TTL ทั้งหมดที่ใช้งานอยู่ Listener ของสแนปชอตและทริกเกอร์ Cloud Functions ทริกเกอร์ Cloud Firestore

ช่องและดัชนี TTL

ช่อง TTL จะจัดทำดัชนีหรือยกเลิกการจัดทำดัชนีได้ แต่เนื่องจากฟิลด์ TTL เป็น การประทับเวลา การจัดทำดัชนีช่องอาจส่งผลต่อประสิทธิภาพสำหรับอัตราการเข้าชมที่สูงขึ้น การจัดทำดัชนีช่องการประทับเวลาจะสร้างดัชนีได้ ฮอตสปอตที่ขัดต่อแนวทางปฏิบัติแนะนำ ฮอตสปอตคือ มีอัตราการอ่าน การเขียน และลบสูงในช่วงเอกสารที่แคบ

โดยค่าเริ่มต้น Cloud Firestore จะสร้างดัชนีช่องเดียวสำหรับทุกช่อง คุณสามารถ สร้างการยกเว้นดัชนีในช่องเดียว เพื่อปิดใช้ดัชนีในช่อง TTL

สิทธิ์

ผู้ใช้หลักที่กำหนดค่านโยบาย TTL ต้องมีสิทธิ์ต่อไปนี้ใน โปรเจ็กต์:

  • การดูนโยบาย TTL ต้องใช้ datastore.indexes.list และ datastore.indexes.get
  • การแก้ไขนโยบาย TTL ต้องใช้ datastore.indexes.update สิทธิ์
  • การตรวจสอบสถานะของการดำเนินการ TTL ต้องใช้ datastore.operations.list และ datastore.operations.get

สําหรับบทบาทที่มอบหมายสิทธิ์เหล่านี้ โปรดดูที่บทบาทการจัดการข้อมูลและการเข้าถึงใน Cloud Firestore

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

ก่อนใช้ gcloud CLI เพื่อจัดการนโยบาย TTL ให้ใช้โอเปอเรเตอร์ gcloud components update เพื่ออัปเดตคอมโพเนนต์เป็นเวอร์ชันล่าสุดที่มีอยู่

gcloud components update

สร้างนโยบาย TTL

เมื่อสร้างนโยบาย TTL คุณต้องระบุวันที่หมดอายุเป็นฟิลด์เอกสาร สำหรับเอกสารในกลุ่มคอลเล็กชัน

TTL ใช้ช่องที่ระบุเพื่อระบุเอกสารที่มีสิทธิ์ลบ ช่อง TTL นี้ต้องเป็นประเภท Date and time คุณสามารถเลือกฟิลด์ มีอยู่แล้ว หรือคุณสามารถกำหนดฟิลด์ที่วางแผนจะเพิ่มในภายหลัง

โปรดพิจารณาสิ่งต่อไปนี้ก่อนที่จะกำหนดค่าช่อง TTL

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

  • การใช้ประเภทข้อมูลอื่นหรือไม่ตั้งค่าช่อง TTL จะเป็นการปิดใช้ TTL สำหรับเอกสารแต่ละรายการ

หากต้องการสร้างนโยบาย TTL ให้ทำตามขั้นตอนต่อไปนี้

Google Cloud Console

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิก Time-to-live

  4. คลิกสร้างนโยบาย

  5. ป้อนชื่อกลุ่มคอลเล็กชันและชื่อฟิลด์การประทับเวลา

  6. คลิกสร้าง

คอนโซลจะกลับไปที่หน้า Time-to-live หากการดำเนินการ เริ่มต้นเรียบร้อยแล้ว หน้านี้จะเพิ่มรายการลงในตารางนโยบาย TTL เปิด ข้อผิดพลาด หน้าเว็บจะแสดงข้อความแสดงข้อผิดพลาด

gcloud

ใช้firestore fields ttls update เพื่อกำหนดค่านโยบาย TTL เพิ่มแฟล็ก --async เพื่อป้องกันไม่ให้ gcloud CLI จากการรอให้การดำเนินการเสร็จสมบูรณ์

 gcloud firestore fields ttls update
  ttl_field --collection-group=collection_group_name
  --enable-ttl 

ระยะเวลาการเปิดใช้นโยบาย TTL

การเปิดใช้ TTL อาจใช้เวลาอย่างน้อย 10 นาทีแม้จะอยู่ในฐานข้อมูลที่ว่างเปล่า เมื่อคุณเริ่มดำเนินการ การปิดเทอร์มินัลไม่ได้เป็นการยกเลิก การดำเนินการ

ดูนโยบาย TTL

หากต้องการดูนโยบาย TTL และสถานะ ให้ทำตามขั้นตอนต่อไปนี้

Google Cloud Console

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิก Time-to-live

คอนโซลจะแสดงนโยบาย TTL สำหรับฐานข้อมูลของคุณ และรวมแต่ละนโยบาย สถานะ

gcloud

ใช้เมนู firestore fields ttls list เพื่อกำหนดค่านโยบาย TTL คำสั่งต่อไปนี้แสดง TTL ทั้งหมด

   gcloud firestore fields ttls list
   

หากต้องการแสดงรายการนโยบาย TTL ภายใต้กลุ่มคอลเล็กชันที่ระบุ ให้ใช้รายการต่อไปนี้

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

ดูรายละเอียดการดำเนินการ

คุณใช้ gcloud CLI เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับนโยบาย TTL ได้ ที่อยู่ในสถานะ CREATING

ใช้คำสั่ง operations list เพื่อดูการทำงานและ การดำเนินการที่เพิ่งเสร็จสิ้นไป:

gcloud firestore operations list

การตอบสนองประกอบด้วยค่าประมาณของความคืบหน้าในการดำเนินการ

ปิดใช้นโยบาย TTL

หากต้องการปิดใช้นโยบาย TTL ให้ทำตามขั้นตอนต่อไปนี้

Google Cloud Console

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิก Time-to-live

  4. ในตารางนโยบาย TTL ให้ค้นหาแถวของนโยบาย TTL ภายใน แถวของตาราง คลิกปุ่มลบ (ถังขยะ)

  5. ยืนยันโดยคลิกลบ

คอนโซลจะกลับไปที่หน้า Time-to-live เมื่อประสบความสำเร็จ Cloud Firestore จะนำนโยบาย TTL ออกจากตาราง

gcloud

1. ใช้เมนู firestore fields ttls update เพื่อกำหนดค่านโยบาย TTL เพิ่มแฟล็ก --async เพื่อป้องกันไม่ให้ gcloud CLI จากการรอให้การดำเนินการเสร็จสมบูรณ์

   gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
   

ตรวจสอบการลบ TTL

คุณใช้ Cloud Monitoring เพื่อดูเมตริกเกี่ยวกับการลบที่มาจาก TTL ได้ Cloud Firestore มีเมตริกต่อไปนี้สำหรับ TTL

ประเภทเมตริก ชื่อเมตริก คำอธิบายเมตริก
firestore.googleapis.com/document/ttl_deletion_count จำนวนการลบแบบ Time to Live

จำนวนเอกสารทั้งหมดที่นโยบาย TTL ลบ

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays การหมดอายุแบบ Time to Live จนถึงการหน่วงเวลาการลบ

เวลาที่ผ่านไประหว่างที่เอกสารหมดอายุภายใต้ TTL นโยบายและเวลาที่ลบจริง

หากต้องการตั้งค่าหน้าแดชบอร์ดด้วยเมตริก Cloud Firestore โปรดดู จัดการแดชบอร์ดที่กำหนดเอง และ เพิ่มวิดเจ็ตหน้าแดชบอร์ด