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

เกี่ยวข้องกับ Cloud Firestore Enterprise Edition เท่านั้น

หน้านี้อธิบายวิธีใช้ Google Cloud Console และ Google Cloud CLI เพื่อกำหนดค่านโยบาย Time to Live (TTL)

ภาพรวม Time to Live

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

ราคา

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

ข้อจำกัด

  • คุณทำเครื่องหมายฟิลด์ได้เพียง 1 รายการต่อคอลเล็กชันเป็นฟิลด์ TTL
  • คุณกำหนดค่า TTL ระดับฟิลด์ได้สูงสุด 500 รายการ

การลบ TTL

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

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

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

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

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

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

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

  • Cloud Firestore ที่เข้ากันได้กับ MongoDB จะหมดอายุเอกสารเมื่อตั้งค่าฟิลด์ TTL เป็นประเภท Date and time หรือ BSON Date เท่านั้น เว้นว่างช่องนี้ไว้หรือตั้งค่าเป็นค่า เช่น null เพื่อปิดใช้การหมดอายุในระดับเอกสาร

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

ฟิลด์และดัชนี TTL

ฟิลด์ TTL สามารถจัดทำดัชนีหรือไม่จัดทำดัชนีก็ได้ อย่างไรก็ตาม เนื่องจากฟิลด์ 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 นี้ต้องเป็นประเภท Timestamp หรือ BSON Date คุณเลือกฟิลด์ที่มีอยู่แล้วหรือกำหนดฟิลด์ที่วางแผนจะเพิ่มในภายหลังก็ได้

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

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

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

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

Google Cloud Console

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

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

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

  3. ในเมนูการนำทาง ให้คลิกเวลาในการใช้งาน (TTL)

  4. คลิก Create Policy

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

  6. คลิกสร้าง

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

gcloud

  1. ติดตั้งและเริ่มต้น gcloud CLI CLI

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

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

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

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

ดูนโยบาย TTL

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

Google Cloud Console

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

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

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

  3. ในเมนูการนำทาง ให้คลิกเวลาในการใช้งาน (TTL)

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

gcloud

  1. ติดตั้งและเริ่มต้น gcloud CLI CLI

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

    gcloud firestore fields ttls list
    

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

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

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

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

ใช้คำสั่ง operations list เพื่อดูการดำเนินการทั้งหมดที่กำลังทำงานอยู่และ การดำเนินการที่เพิ่งเสร็จสมบูรณ์

gcloud firestore operations list

การตอบกลับจะรวมค่าประมาณความคืบหน้าของการดำเนินการ

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

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

Google Cloud Console

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

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

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

  3. ในเมนูการนำทาง ให้คลิกเวลาในการใช้งาน (TTL)

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

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

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

gcloud

  1. ติดตั้งและเริ่มต้น gcloud CLI CLI

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

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

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

คุณใช้ Cloud Monitoring เพื่อดูเมตริกเกี่ยวกับการลบที่อิงตาม TTL ได้ Cloud Firestore ที่ใช้ได้กับ MongoDB มีเมตริกต่อไปนี้สำหรับ 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 ที่มีเมตริกความเข้ากันได้ของ MongoDB โปรดดูจัดการแดชบอร์ดที่กำหนดเองและเพิ่มวิดเจ็ตแดชบอร์ด