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

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

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

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

תמחור

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

מגבלות

  • אפשר לסמן רק נכס אחד מכל סוג כנכס TTL.
  • אפשר להגדיר עד 1,000 כללי TTL.

מחיקת TTL

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

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

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

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

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

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

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

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

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

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

מאפייני TTL ואינדקסים

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

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

הרשאות

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

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

למידע על תפקידים שמקצים את ההרשאות האלה, ראו תפקידים ב-IAM של Datastore.

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

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

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

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

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

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

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

מסוף Google Cloud

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

    מעבר אל Databases

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

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

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

  5. מזינים שם סוג ושם מאפיין של חותמת זמן.

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

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

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

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

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

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

צפייה במדיניות בנושא TTL

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

מסוף Google Cloud

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

    מעבר אל Databases

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

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

במסוף Google Cloud מופיעות מדיניות ה-TTL של מסד הנתונים, וגם הסטטוס של כל מדיניות.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. משתמשים בפקודה 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

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

    מעבר אל Databases

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

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

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

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

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

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. משתמשים בפקודה 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. ב-Datastore מוצגים המדדים הבאים לגבי TTL:

datastore.googleapis.com/entity/ttl_deletion_count מספר הפריטים שנמחקו בגלל TTL

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

datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays עיכובים במחיקה בגלל תפוגת ה-TTL

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

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