בדף הזה מוסבר איך להשתמש במסוף Google Cloud וב-Google Cloud CLI כדי להגדיר מדיניות של זמן חיים (TTL). לפני שקוראים את הדף הזה, חשוב להבין את מודל הנתונים של Datastore במצב Datastore.
סקירה כללית של זמן החיים
אפשר להשתמש במדיניות TTL כדי להסיר באופן אוטומטי נתונים לא עדכניים ממסדי הנתונים. מדיניות TTL מציינת מאפיין מסוים כזמן התפוגה של ישויות מסוג מסוים. בעזרת TTL, אפשר להקטין את עלויות האחסון על ידי ניקוי נתונים לא רלוונטיים. הנתונים נמחקים בדרך כלל תוך 24 שעות מתאריך התפוגה שלהם.
תמחור
פעולות מחיקה לפי TTL נכללות בעלויות המחיקה של הישויות. למידע על התמחור של פעולות מחיקה, ראו תמחור של Firestore במצב Datastore.
מגבלות ואילוצים
- אפשר לסמן רק נכס אחד מכל סוג כנכס TTL.
- אפשר להגדיר עד 1,000 כללי מדיניות של TTL.
מחיקה של TTL
חשוב לשים לב להתנהגויות העיקריות הבאות של מחיקה שמבוססת על TTL:
מחיקה באמצעות TTL היא לא תהליך מיידי. ישויות שתוקפן פג ממשיכות להופיע בשאילתות ובבקשות חיפוש עד שתהליך ה-TTL מוחק אותן בפועל. ה-TTL מאפשר למחוק נתונים בזמן קצר יותר, כדי להקטין את עלות הבעלות הכוללת של המחיקות. הנתונים נמחקים בדרך כלל תוך 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 חייב להיות מסוג Date and time. אתם יכולים לבחור נכס שכבר קיים או לציין נכס שאתם מתכננים להוסיף בהמשך.
לפני שמגדירים את ערך המאפיין TTL, כדאי לקחת בחשבון את הנקודות הבאות:
ערך המאפיין TTL יכול להיות זמן בעתיד, עכשיו או בעבר. אם הערך הוא זמן בעבר, הישות עומדת בדרישות למחיקה באופן מיידי. לדוגמה, אפשר ליצור מדיניות TTL עם המאפיין
expireAt, ואז להוסיף אותה לישויות קיימות.שימוש בסוג נתונים אחר או אי הגדרה של ערך המאפיין TTL ישביתו את ה-TTL עבור הישות הספציפית.
כדי ליצור מדיניות TTL:
מסוף Google Cloud
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Time-to-live (זמן החיים).
לוחצים על יצירת מדיניות.
מזינים שם סוג ושם נכס של חותמת זמן.
אופציונלי: מגדירים הזחה של תאריך התפוגה. מזינים ערך ובוחרים יחידה (ימים, שעות, דקות או שניות). כברירת מחדל, ההיסט הוא 0.
לוחצים על יצירה.
המסוף חוזר לדף Time-to-live. אם הפעולה מתחילה בהצלחה, הדף מוסיף רשומה לטבלה של מדיניות ה-TTL. אם הפעולה נכשלת, מוצגת בדף הודעת שגיאה.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
משתמשים בפקודה
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 והסטטוסים שלה:
מסוף Google Cloud
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Time-to-live (זמן החיים).
במסוף Google Cloud מופיעות מדיניות ה-TTL של מסד הנתונים, וגם הסטטוס של כל מדיניות.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
משתמשים בפקודה
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
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Time-to-live (זמן החיים).
בטבלת מדיניות ה-TTL, מוצאים את השורה של מדיניות ה-TTL. בשורה הזו בטבלה, לוחצים על הלחצן מחיקה (סמל של פח אשפה).
לוחצים על מחיקה כדי לאשר את הפעולה.
המסוף Google Cloud חוזר לדף Time-to-live. אם הפעולה מצליחה, מדיניות ה-TTL מוסרת מהטבלה ב-Datastore.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
משתמשים בפקודה
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, אפשר לעיין במאמרים בנושא ניהול לוחות בקרה בהתאמה אישית והוספת ווידג'טים ללוח בקרה.