ניהול שמירת הנתונים באמצעות מדיניות TTL

בדף הזה מוסבר איך להשתמש במסוף Google Cloud וב-Google Cloud CLI כדי להגדיר מדיניות של זמן חיים (TTL). לפני שאתם קוראים את הדף הזה, חשוב שתבינו את מודל הנתונים של Cloud Firestore.

סקירה כללית של זמן חיים (TTL)

אפשר להשתמש במדיניות TTL כדי להסיר באופן אוטומטי נתונים לא עדכניים ממסדי הנתונים. מדיניות TTL מגדירה שדה מסוים כזמן התפוגה של מסמכים בקבוצת אוספים נתונה. בעזרת TTL אפשר להפחית את עלויות האחסון על ידי ניקוי נתונים מיושנים. הנתונים נמחקים בדרך כלל תוך 24 שעות מתאריך התפוגה שלהם.

תמחור

פעולות מחיקה של TTL נכללות בעלויות של מחיקת המסמכים. למידע על תמחור של פעולות מחיקה, ראו תמחור של Cloud Firestore.

מגבלות ואילוצים

  • אפשר לסמן רק שדה אחד בכל קבוצת אוספים כשדה TTL.
  • אפשר להגדיר עד 1,000 הגדרות ברמת השדה. הגדרת שדה אחת יכולה להכיל כמה הגדרות לאותו שדה. לדוגמה, החרגה של שדה יחיד מהוספה לאינדקס ומדיניות TTL באותו שדה נחשבות כהגדרה אחת של שדה במגבלה.
  • לקוחות של Firestore במצב Datastore לא יכולים להשתמש ב-TTL עם מצב בו-זמניות של Optimistic With Entity Groups. מומלץ לשנות את מצב בו-זמניות למצב בו-זמניות אופטימי.

מחיקת TTL

חשוב לשים לב להתנהגויות העיקריות הבאות של מחיקה מבוססת-TTL:

  • מחיקה באמצעות TTL היא לא תהליך מיידי. מסמכים שפג תוקפם ממשיכים להופיע בשאילתות ובבקשות חיפוש עד שתהליך ה-TTL מוחק אותם בפועל. השימוש ב-TTL מאפשר להפחית את עלות הבעלות הכוללת (TCO) של המחיקות, אבל המחיקות לא מתבצעות באופן מיידי. הנתונים נמחקים בדרך כלל תוך 24 שעות אחרי תאריך התפוגה שלהם.

  • מחיקת מסמך באמצעות TTL לא מוחקת את אוספי המשנה של אותו מסמך.

  • אם מחילים מדיניות TTL על קבוצת אוספים קיימת, כל הנתונים שפג תוקפם נמחקים בכמות גדולה בהתאם למדיניות ה-TTL החדשה. חשוב לזכור שגם המחיקה בכמות גדולה לא מתבצעת באופן מיידי, והיא תלויה בכמות הנתונים שקיימים בקבוצת האוספים הזו.

  • אם למסמך יש זמן תפוגה בעבר ואתם מוסיפים מדיניות TTL חדשה לאוסף, המסמך יימחק תוך 24 שעות מרגע שהגדרת מדיניות ה-TTL תסתיים והיא תהפוך לפעילה.

  • TTL לא בהכרח מוחק מסמכים לפי סדר חותמות הזמן של התפוגה שלהם.

  • המחיקות לא מתבצעות כטרנזקציות. מסמכים עם אותו זמן תפוגה לא בהכרח נמחקים באותו זמן. אם אתם צריכים את ההתנהגות הזו, בצעו את המחיקות באמצעות ספריית לקוח.

  • ‫Cloud Firestore תמיד יכבד את שדה ה-TTL האחרון כדי לקבוע את תאריך התפוגה. לדוגמה, אם מעדכנים את שדה ה-TTL של מסמך שפג תוקפו אבל עדיין לא נמחק לתאריך מאוחר יותר, תוקף המסמך לא יפוג וייעשה שימוש בתאריך החדש.

  • ‫Cloud Firestore מסיר מסמך רק כשהשדה TTL מוגדר לסוגי ערכים ספציפיים. במסדי נתונים של Standard Edition, צריך להגדיר את השדה לערך Date and time. במסדי נתונים במהדורת Enterprise, השדה חייב להיות מוגדר לערך Date and time או לערך Array שמכיל ערך Date and time. אם לא מגדירים את השדה או מגדירים אותו לערך כמו null, אפשר להשבית את התפוגה לכל מסמך בנפרד.

  • ה-TTL נועד לצמצם את ההשפעה על פעילויות אחרות במסד הנתונים. מחיקות שמופעלות על ידי TTL מטופלות בעדיפות נמוכה יותר. יש גם אסטרטגיות אחרות למניעת עליות חדות בתנועה כתוצאה ממחיקות שמונעות על ידי TTL.

  • מחיקה באמצעות TTL מפעילה את כל המאזינים הפעילים של תמונות המצב ואת הטריגרים של Cloud Functions Cloud Firestore.

שדות ואינדקסים של TTL

שדה TTL יכול להיות נוסף לאינדקס או לא נוסף לאינדקס. עם זאת, מכיוון ששדה TTL הוא חותמת זמן, הוספת השדה לאינדקס יכולה להשפיע על הביצועים בשיעורי תנועה גבוהים יותר. הוספת שדה של חותמת זמן לאינדקס יכולה ליצור נקודות חמות, וזה מנוגד לשיטות המומלצות. נקודות חמות הן שיעורים גבוהים של קריאה, כתיבה ומחיקה בטווח מסמכים צר.

כברירת מחדל, במהדורת Cloud Firestore Standard נוצר אינדקס של שדה יחיד לכל השדות. אתם יכולים ליצור החרגה של אינדקס בשדה יחיד כדי להשבית אינדקסים בשדה TTL.

הרשאות

לחשבון המשתמש שמגדיר מדיניות TTL נדרשת ההרשאה הבאה בפרויקט:

  • כדי להציג כללי מדיניות של TTL, נדרשות ההרשאות datastore.indexes.list ו-datastore.indexes.get.
  • כדי לשנות את כללי מדיניות ה-TTL צריך את ההרשאה datastore.indexes.update.
  • כדי לבדוק את הסטטוס של פעולות TTL, צריך את ההרשאות datastore.operations.list ו-datastore.operations.get.

במאמר תפקידים בניהול זהויות והרשאות גישה (IAM) ב-Cloud Firestore מפורטים התפקידים שכוללים את ההרשאות האלה.

יצירת מדיניות TTL

כשיוצרים מדיניות TTL, מגדירים שדה מסמך בתור זמן התפוגה של מסמכים בקבוצת אוספים.

ב-TTL נעשה שימוש בשדה שצוין כדי לזהות מסמכים שאפשר למחוק. במסדי נתונים במהדורת Standard, צריך להגדיר את השדה TTL לערך Date and time. במסדי נתונים של מהדורת Enterprise, צריך להגדיר את המאפיין לערך Date and time או לערך Array שמכיל ערך Date and time. אפשר לבחור שדה שכבר קיים או להגדיר שדה שמתכננים להוסיף בהמשך.

לפני שמגדירים את הערך בשדה TTL, חשוב להביא בחשבון את הדברים הבאים:

  • הערך של השדה TTL יכול להיות זמן בעתיד, עכשיו או בעבר. אם הערך הוא זמן בעבר, המסמך זמין למחיקה באופן מיידי. לדוגמה, אתם יכולים ליצור מדיניות TTL עם השדה expireAt, ואז להוסיף אותו למסמכים קיימים.

  • אם תשתמשו בכל סוג נתונים אחר או לא תגדירו את ערך השדה TTL, תושבת האפשרות להגדיר TTL למסמך הספציפי.

כדי ליצור מדיניות TTL:

Google Cloud Console

  1. נכנסים לדף Databases במסוף Google Cloud.

    כניסה לדף Databases

  2. בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.

  3. בתפריט הניווט, לוחצים על Time-to-live.

  4. לוחצים על יצירת מדיניות.

  5. מזינים שם לקבוצת האוספים ושם לשדה חותמת הזמן.

  6. אופציונלי: מגדירים היסט תפוגה. מזינים ערך ובוחרים יחידה (ימים, שעות, דקות או שניות). כברירת מחדל, ההיסט הוא 0.

  7. לוחצים על יצירה.

המסוף חוזר לדף Time-to-live. אם הפעולה מתחילה, הדף מוסיף רשומה לטבלת כללי מדיניות ה-TTL. אם הפעולה נכשלת, מוצגת הודעת שגיאה.

gcloud

משתמשים בפקודה firestore fields ttls update כדי להגדיר מדיניות TTL. מוסיפים את הדגל --async כדי למנוע מה-CLI של gcloud להמתין עד שהפעולה תסתיים.

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

כדי להפעיל את TTL עם היסט תפוגה, מוסיפים את הדגל --expiration-offset:

 gcloud firestore fields ttls update 
ttl_field
--collection-group=collection_group_name
--enable-ttl
--expiration-offset=expiration_offset

מחליפים את expiration_offset במשך זמן, לדוגמה, 7d ל-7 ימים או 24h ל-24 שעות. אם לא מציינים את הדגל הזה, ברירת המחדל של היסט התפוגה היא 0.

משך הזמן להפעלת מדיניות TTL

הפעלת מדיניות TTL יכולה להימשך עשר דקות או יותר. אחרי שמתחילים פעולה, סגירת הטרמינל לא מבטלת אותה.

הצגת כללי מדיניות TTL

כדי לראות את כללי מדיניות ה-TTL ואת הסטטוסים שלהם, פועלים לפי השלבים הבאים:

Google Cloud Console

  1. נכנסים לדף Databases במסוף Google Cloud.

    כניסה לדף Databases

  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
   

הצגת פרטי הפעולה

אתם יכולים להשתמש ב-CLI של gcloud כדי לראות פרטים נוספים על מדיניות TTL שנמצאת במצב CREATING.

משתמשים בפקודה operations list כדי לראות את כל הפעולות שפועלות ואת אלה שהסתיימו לאחרונה:

gcloud firestore operations list

התשובה כוללת הערכה של התקדמות הפעולה.

השבתת מדיניות TTL

כדי להשבית מדיניות TTL:

Google Cloud Console

  1. נכנסים לדף Databases במסוף Google Cloud.

    כניסה לדף Databases

  2. בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.

  3. בתפריט הניווט, לוחצים על Time-to-live.

  4. בטבלת מדיניות ה-TTL, מוצאים את השורה של מדיניות ה-TTL. בשורה הזו בטבלה, לוחצים על הלחצן Delete (סמל פח האשפה).

  5. לוחצים על מחיקה כדי לאשר את הפעולה.

המסוף חוזר לדף Time-to-live. אם הפעולה מצליחה, Cloud Firestore מסיר את מדיניות ה-TTL מהטבלה.

gcloud

1. משתמשים בפקודה firestore fields ttls update כדי להגדיר מדיניות TTL. מוסיפים את הדגל --async כדי למנוע מה-CLI של gcloud להמתין עד שהפעולה תסתיים.

   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 מספר המחיקות של זמן חיים

המספר הכולל של המסמכים שנמחקו על ידי כללי מדיניות TTL.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays עיכובים במחיקה של פריטים שפג תוקפם

הזמן שחלף בין מועד התפוגה של מסמך לפי מדיניות TTL לבין המועד שבו הוא נמחק בפועל.

כדי להגדיר לוח בקרה עם מדדי Cloud Firestore, קראו את המאמרים ניהול לוחות בקרה בהתאמה אישית והוספת ווידג'טים ללוח הבקרה.