ניהול שמירת נתונים באמצעות מדיניות TTL
בדף הזה מוסבר איך להשתמש במסוף וב-Google Cloud CLI כדי להגדיר מדיניות של זמן חיים (TTL). Google Cloud לפני שקוראים את הדף הזה, חשוב להבין את מודל הנתונים של Firestore.
סקירה כללית של אורך חיים (TTL)
אפשר להשתמש במדיניות TTL כדי להסיר באופן אוטומטי נתונים לא עדכניים ממסדי הנתונים. מדיניות TTL מציינת שדה מסוים כזמן התפוגה של מסמכים בקבוצת אוספים מסוימת. בעזרת TTL, אפשר להקטין את עלויות האחסון על ידי ניקוי נתונים לא רלוונטיים. הנתונים נמחקים בדרך כלל תוך 24 שעות אחרי תאריך התפוגה.
תמחור
פעולות מחיקה של TTL נכללות בעלויות המחיקה של המסמכים. למידע על התמחור של פעולות מחיקה, אפשר לעיין במחירון של Firestore.
מגבלות
- אפשר לסמן רק שדה אחד בכל קבוצת אוסף כשדה TTL.
- אפשר להגדיר עד 1,000 הגדרות ברמת השדה. הגדרה אחת של שדה יכולה להכיל כמה הגדרות לאותו שדה. לדוגמה, אם יש חריגה מאינדוקס של שדה יחיד ומדיניות TTL באותו שדה, הם נספרים כהגדרת שדה אחת מתוך המגבלה.
- לקוחות של Firestore במצב Datastore לא יכולים להשתמש ב-TTL עם מצב מקביליות של אופטימי עם קבוצות ישויות. כדאי לשנות את מצב הריצה למצב Optimistic concurrency mode.
מחיקת TTL
חשוב לשים לב להתנהגויות העיקריות הבאות של מחיקה שמבוססת על TTL:
מחיקה באמצעות TTL היא לא תהליך מיידי. מסמכים שתוקפם פג ממשיכים להופיע בשאילתות ובבקשות חיפוש עד שתהליך ה-TTL מוחק אותם בפועל. TTL מחליף את עיתוי המחיקה לטובת צמצום עלות הבעלות הכוללת (TCO) של המחיקות. הנתונים נמחקים בדרך כלל תוך 24 שעות אחרי תאריך התפוגה שלהם.
מחיקת מסמך באמצעות TTL לא מוחקת את אוספי המשנה שמתחת למסמך הזה.
החלת מדיניות TTL על קבוצת איסוף קיימת גורמת למחיקה בכמות גדולה של כל הנתונים שתוקף השימוש בהם פג, בהתאם למדיניות ה-TTL החדשה. חשוב לזכור שהמחיקה בכמות גדולה לא מתבצעת באופן מיידי, והיא תלויה בכמות הנתונים שקיימים בקבוצת האיסוף.
אם למסמך יש זמן תפוגה בעבר ואתם מוסיפים מדיניות חדשה של TTL לאוסף, המסמך יימחק תוך 24 שעות מסיום ההגדרה של מדיניות ה-TTL והפיכתה לפעילה.
המסמכים לא נמחקים בהכרח לפי סדר התפוגה שלהם.
המחיקות לא מתבצעות באופן טרנזקציונלי. מסמכים עם אותו מועד תפוגה לא נמחקים בהכרח באותו זמן. אם אתם רוצים שהמערכת תפעל כך, תצטרכו לבצע את המחיקות באמצעות ספריית לקוח.
Firestore תמיד יתחשב בשדה ה-TTL העדכני ביותר כדי לקבוע את תאריך התפוגה. לדוגמה, אם מסמך שתוקפו פג אבל הוא עדיין לא נמחק, והשדה TTL שלו עודכן לתאריך מאוחר יותר, התוקף של המסמך לא יפוג והתאריך החדש ישמש כנקודת הסיום.
תוקף של מסמך ב-Firestore פג רק אם שדה ה-TTL מוגדר לסוגי ערכים ספציפיים. במסדי נתונים במהדורת Standard, השדה צריך להיות מוגדר לערך
Date and time. במסדי נתונים של מהדורת Enterprise, השדה צריך להיות מוגדר לערךDate and timeאו לערךArrayשמכיל ערךDate and time. אם לא מציינים ערך בשדה או מגדירים ערך כמוnull, אפשר להשבית את התפוגה על בסיס כל מסמך בנפרד.ה-TTL נועד לצמצם את ההשפעה על פעילויות אחרות במסד הנתונים. מחיקות שנובעות מ-TTL מקבלות עדיפות נמוכה יותר. יש גם אסטרטגיות אחרות שמטרתן למתן את העליות החדות בתנועה שנגרמות ממחיקות שמבוססות על TTL.
מחיקה באמצעות TTL מפעילה את כל מאזיני התמונות הפעילים ומפעילה פונקציות Cloud Run, טריגרים של Firestore.
שדות ואינדקסים של TTL
אפשר להוסיף לאינדקס שדה TTL או לא להוסיף אותו. עם זאת, מכיוון ששדה TTL הוא חותמת זמן, הוספת השדה לאינדקס עלולה להשפיע על הביצועים בשיעורי תעבורת נתונים גבוהים יותר. הוספה לאינדקס של שדה חותמת זמן עלולה ליצור נקודות חמות, וזה לא מומלץ. נקודות חמות הן שיעורי קריאה, כתיבה ומחיקה גבוהים בטווח מצומצם של מסמכים.
כברירת מחדל, מהדורת Firestore Standard יוצרת אינדקס של שדה יחיד לכל השדות. אפשר ליצור חריגה לאינדקס של שדה יחיד כדי להשבית אינדקסים בשדה TTL.
הרשאות
לחשבון המשתמש שמגדיר מדיניות TTL נדרשת ההרשאה הבאה בפרויקט:
- כדי לראות את מדיניות ה-TTL צריך את ההרשאות
datastore.indexes.listו-datastore.indexes.get. - כדי לשנות מדיניות TTL צריך את ההרשאה
datastore.indexes.update. - כדי לבדוק את הסטטוס של פעולות TTL, צריך הרשאות
datastore.operations.listו-datastore.operations.get.
במאמר תפקידים ב-IAM של 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
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Time-to-live.
לוחצים על יצירת מדיניות.
מזינים שם לקבוצת האוספים ושם של שדה חותמת זמן.
לוחצים על יצירה.
המסוף חוזר לדף 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 מופעלת
יכולות לעבור לפחות עשר דקות עד שמדיניות TTL מופעלת. אחרי שמתחילים פעולה, סגירת הטרמינל לא מבטלת את הפעולה.
צפייה במדיניות בנושא TTL
כדי לראות את מדיניות ה-TTL והסטטוסים שלה:
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Time-to-live.
במסוף מופיעות מדיניות ה-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 Console
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Time-to-live.
בטבלת מדיניות ה-TTL, מחפשים את השורה של מדיניות ה-TTL. בשורה הזו בטבלה, לוחצים על הלחצן מחיקה (סמל פח האשפה).
לוחצים על מחיקה כדי לאשר את הפעולה.
המסוף חוזר לדף Time-to-live. אם הפעולה תצליח, מדיניות ה-TTL תוסר מהטבלה ב-Firestore.
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. ב-Firestore מוצגים המדדים הבאים לגבי TTL:
| סוג מדד | שם המדד | תיאור המדד |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | מספר הפריטים שנמחקו בגלל זמן החיים |
המספר הכולל של מסמכים שנמחקו על ידי מדיניות TTL. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | תפוגת תוקף של זמן החיים (TTL) לעיכובים במחיקה |
הזמן שחלף בין מועד התפוגה של מסמך במסגרת מדיניות TTL לבין מועד המחיקה בפועל. |
כדי להגדיר לוח בקרה עם מדדי Firestore, אפשר לעיין במאמרים בנושא ניהול לוחות בקרה בהתאמה אישית והוספת ווידג'טים ללוח בקרה.