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