หน้านี้อธิบายวิธีใช้ Google Cloud Console และ Google Cloud CLI เพื่อกำหนดค่านโยบาย Time to Live (TTL) ก่อนอ่านหน้านี้ คุณควรทําความเข้าใจCloud Firestoreโมเดลข้อมูล
ภาพรวม Time to Live
ใช้นโยบาย TTL เพื่อนำข้อมูลที่ล้าสมัยออกจากฐานข้อมูลโดยอัตโนมัติ นโยบาย TTL จะกำหนดฟิลด์ที่ระบุเป็น เวลาหมดอายุสำหรับเอกสารในกลุ่มคอลเล็กชันที่ระบุ TTL ช่วยให้คุณ ลดต้นทุนด้านพื้นที่เก็บข้อมูลได้ด้วยการล้างข้อมูลที่ล้าสมัย โดยปกติแล้ว ระบบจะลบข้อมูล ภายใน 24 ชั่วโมงหลังจากวันที่หมดอายุ
ราคา
การดำเนินการลบ TTL จะนับรวมในค่าใช้จ่ายในการลบเอกสาร โปรดดูราคา ของการดำเนินการลบที่Cloud Firestoreราคา
ข้อจำกัด
- คุณทำเครื่องหมายฟิลด์ได้เพียง 1 ฟิลด์ต่อกลุ่มคอลเล็กชันเป็นฟิลด์ TTL
- คุณกำหนดค่าระดับฟิลด์ได้สูงสุด 500 รายการ การกำหนดค่าฟิลด์ 1 รายการ อาจมีการกำหนดค่าหลายรายการสำหรับฟิลด์เดียวกัน เช่น การยกเว้นการจัดทำดัชนีแบบฟิลด์เดียวและนโยบาย TTL ในฟิลด์เดียวกันจะนับเป็น การกำหนดค่าฟิลด์ 1 รายการตามขีดจำกัด
- สำหรับลูกค้า Firestore ในโหมด Datastore จะใช้ TTL กับโหมดการทำงานพร้อมกันของ การมองโลกในแง่ดีที่มีกลุ่มเอนทิตีไม่ได้ ลองเปลี่ยนโหมดการเกิดขึ้นพร้อมกันเป็นโหมดการเกิดขึ้นพร้อมกันแบบมองโลกในแง่ดี
การลบ TTL
โปรดทราบลักษณะการทำงานที่สำคัญต่อไปนี้ของการลบที่กำหนดโดย TTL
การลบผ่าน TTL ไม่ใช่กระบวนการที่เกิดขึ้นทันที เอกสารที่หมดอายุแล้ว จะยังคงปรากฏในการค้นหาและคำขอค้นหาจนกว่ากระบวนการ TTL จะลบเอกสารเหล่านั้นออกจริงๆ TTL จะลบการซื้อขายอย่างทันท่วงทีเพื่อประโยชน์ในการลดต้นทุนรวมในการเป็นเจ้าของสำหรับการลบ โดยปกติแล้ว ระบบจะลบข้อมูลภายใน 24 ชั่วโมงหลังจากวันที่หมดอายุ
การลบเอกสารผ่าน TTL ไม่ได้เป็นการลบคอลเล็กชันย่อยภายใต้เอกสารนั้น
การใช้นโยบาย TTL กับกลุ่มคอลเล็กชันที่มีอยู่จะส่งผลให้มีการลบข้อมูลที่หมดอายุทั้งหมดพร้อมกันตามนโยบาย TTL ใหม่ โปรดทราบ ว่าการลบแบบเป็นกลุ่มนี้ก็ไม่ได้เกิดขึ้นทันทีเช่นกัน และขึ้นอยู่กับปริมาณข้อมูล ที่มีอยู่ในกลุ่มคอลเล็กชันนั้น
หากเอกสารมีเวลาหมดอายุในอดีตและคุณเพิ่มนโยบาย TTL ใหม่ ลงในคอลเล็กชัน ระบบจะลบเอกสารภายใน 24 ชั่วโมง หลังจากที่นโยบาย TTL ตั้งค่าเสร็จและใช้งานได้
TTL ไม่จำเป็นต้องลบเอกสารตามลำดับเดียวกับ การประทับเวลาหมดอายุ
การลบไม่ได้ดำเนินการแบบธุรกรรม ระบบอาจไม่ได้ลบเอกสารที่มีเวลาหมดอายุเดียวกันพร้อมกัน หากต้องการลักษณะการทำงานนี้ ให้ลบโดยใช้ไลบรารีของไคลเอ็นต์
Cloud Firestore จะใช้ช่อง TTL ล่าสุดเสมอเพื่อกำหนด วันหมดอายุ เช่น หากเอกสารที่หมดอายุแล้วแต่ยังไม่ได้ลบมีการอัปเดตฟิลด์ TTL เป็นวันที่ในภายหลัง เอกสารจะไม่หมดอายุและระบบจะใช้วันที่ใหม่
Cloud Firestore จะทำให้เอกสารหมดอายุเมื่อตั้งค่าฟิลด์ TTL เป็นประเภท a
Date and time
เท่านั้น การปล่อยให้ช่องว่างหรือตั้งค่าเป็นnull
จะช่วยให้ปิดใช้การหมดอายุได้ทีละเอกสาร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 บทบาท Identity and 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 Cloud Console
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกเวลาในการใช้งาน (TTL)
คลิก Create Policy
ป้อนชื่อกลุ่มคอลเล็กชันและชื่อฟิลด์การประทับเวลา
คลิกสร้าง
คอนโซลจะกลับไปที่หน้า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
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกเวลาในการใช้งาน (TTL)
คอนโซลจะแสดงนโยบาย 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
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกเวลาในการใช้งาน (TTL)
ในตารางนโยบาย 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 จนถึงความล่าช้าในการลบ |
เวลาที่ผ่านไประหว่างที่เอกสารหมดอายุภายใต้นโยบาย TTL กับเวลาที่ระบบลบเอกสารจริง |
หากต้องการตั้งค่าแดชบอร์ดที่มีเมตริก Cloud Firestore ให้ดู จัดการแดชบอร์ดที่กําหนดเองและ เพิ่มวิดเจ็ตแดชบอร์ด