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

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

ภาพรวมระยะเวลาในการถ่ายทอดสด

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

ราคา

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

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

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

การลบ TTL

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

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

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

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

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

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

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

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

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

  • การลบผ่าน TTL จะเรียก Listener สแนปช็อตที่ใช้งานอยู่ทั้งหมดและทริกเกอร์ทริกเกอร์ 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 Identity และ Access Management

ก่อนที่คุณจะเริ่ม

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

gcloud components update

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

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

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

พิจารณาสิ่งต่อไปนี้ก่อนที่คุณจะตั้งค่าฟิลด์ TTL:

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

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

ทำตามขั้นตอนด้านล่างเพื่อสร้างนโยบาย TTL:

Google คลาวด์คอนโซล

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

    ไปที่ฐานข้อมูล

  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

ทำตามขั้นตอนด้านล่างเพื่อดูนโยบาย TTL และสถานะ

Google คลาวด์คอนโซล

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

    ไปที่ฐานข้อมูล

  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 คลาวด์คอนโซล

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

    ไปที่ฐานข้อมูล

  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 ถึงความล่าช้าในการลบ

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

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