ניהול שמירת הנתונים באמצעות מדיניות 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 concurrency mode.

מחיקה של TTL

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

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

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

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

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

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

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

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

  • ‫Cloud Firestore expires a document only when the TTL field is set to specific value types. במסדי נתונים במהדורת Standard, צריך להגדיר בשדה ערך של 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.

למידע על תפקידים שמקצים את ההרשאות האלה, ראו Cloud Firestore תפקידים בניהול זהויות והרשאות גישה.

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

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

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

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

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

  • אם משתמשים בסוג נתונים אחר או לא מגדירים את הערך של השדה 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. בשורה הזו בטבלה, לוחצים על הלחצן מחיקה (סמל של פח אשפה).

  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, אפשר לעיין במאמרים ניהול לוחות בקרה בהתאמה אישית והוספת ווידג'טים ללוח הבקרה.