หน้านี้อธิบายวิธีใช้คอนโซล 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 คลาวด์คอนโซล
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก Time-to-live
คลิก สร้างนโยบาย
ป้อนชื่อกลุ่มคอลเลกชันและชื่อฟิลด์การประทับเวลา
คลิก สร้าง
คอนโซลจะกลับสู่เพจ 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 คลาวด์คอนโซล
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก 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 คลาวด์คอนโซล
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก Time-to-live
ในตารางนโยบาย TTL ให้ค้นหาแถวสำหรับนโยบาย TTL ภายในแถวของตารางนี้ ให้คลิกปุ่ม ลบ (ถังขยะ)
ยืนยันโดยคลิก ลบ
คอนโซลจะกลับสู่เพจ 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 โปรดดู ที่จัดการแดชบอร์ดที่กำหนดเอง และ เพิ่มวิดเจ็ตแดชบอร์ด