| רלוונטי רק למהדורת Cloud Firestore Enterprise. |
בדף הזה מוסבר איך להשתמש במסוף Google Cloud וב-Google Cloud CLI כדי להגדיר מדיניות של זמן חיים (TTL).
סקירה כללית של Time to live
אפשר להשתמש במדיניות TTL כדי להסיר באופן אוטומטי נתונים לא עדכניים ממסדי הנתונים. מדיניות TTL מציינת שדה מסוים כזמן התפוגה של מסמכים באוסף נתון. בעזרת TTL, אפשר להקטין את עלויות האחסון על ידי ניקוי נתונים לא רלוונטיים. הנתונים נמחקים בדרך כלל תוך 24 שעות אחרי תאריך התפוגה.
תמחור
פעולות מחיקה של TTL נכללות בעלויות המחיקה של המסמכים. למידע על תמחור של פעולות מחיקה, אפשר לעיין בCloud Firestoreתמחור של מהדורת Enterprise.
מגבלות ואילוצים
- אפשר לסמן רק שדה אחד בכל אוסף כשדה TTL.
- אפשר להגדיר עד 500 הגדרות TTL ברמת השדה.
מחיקה של TTL
חשוב לשים לב להתנהגויות העיקריות הבאות של מחיקה שמבוססת על TTL:
מחיקה באמצעות TTL היא לא תהליך מיידי. מסמכים שתוקפם פג ממשיכים להופיע בשאילתות ובבקשות חיפוש עד שתהליך ה-TTL מוחק אותם בפועל. הזמן שנדרש למחיקת עסקאות (TTL) לטובת צמצום העלות הכוללת של הבעלות על המחיקות. הנתונים נמחקים בדרך כלל תוך 24 שעות אחרי תאריך התפוגה שלהם.
החלת מדיניות TTL על אוסף קיים גורמת למחיקה בכמות גדולה של כל הנתונים שתוקף השימוש בהם פג, בהתאם למדיניות ה-TTL החדשה. הערה: גם מחיקה בכמות גדולה לא מתבצעת באופן מיידי, והיא תלויה בכמות הנתונים שקיימים באוסף הזה.
אם למסמך יש זמן תפוגה בעבר ואתם מוסיפים מדיניות חדשה של TTL לאוסף, המסמך יימחק תוך 24 שעות מסיום ההגדרה של מדיניות ה-TTL והפיכתה לפעילה.
המסמכים לא נמחקים בהכרח לפי סדר התפוגה שלהם.
המחיקות לא מתבצעות באופן טרנזקציונלי. מסמכים עם אותו תאריך תפוגה לא יימחקו בהכרח באותו הזמן. אם אתם רוצים שהמערכת תתנהג כך, תצטרכו לבצע את המחיקות באמצעות ספריית לקוח.
ב-Cloud Firestore עם תאימות ל-MongoDB, תמיד יתבצע שימוש בשדה ה-TTL האחרון כדי לקבוע את תאריך התפוגה. לדוגמה, אם תוקף של מסמך פג אבל הוא עדיין לא נמחק, ואם שדה ה-TTL שלו עודכן לתאריך מאוחר יותר, התוקף של המסמך לא יפוג והתאריך החדש ישמש כעת כתאריך התפוגה.
ב-Cloud Firestore עם תאימות ל-MongoDB, מסמך יפוג רק אם השדה TTL מוגדר לסוג
Date and timeאוBSON Date. כדי להשבית את התפוגה של מסמך מסוים, לא צריך להגדיר את השדה או להגדיר בו ערך כמוnull.ה-TTL נועד לצמצם את ההשפעה על פעילויות אחרות במסד הנתונים. מחיקות שמופעלות על ידי TTL מקבלות עדיפות נמוכה יותר. יש גם אסטרטגיות אחרות שמטרתן למתן את העליות החדות בתנועה שנובעות ממחיקות שמבוססות על TTL.
שדות ואינדקסים של TTL
אפשר להוסיף לאינדקס או להסיר מהאינדקס שדה TTL. עם זאת, מכיוון ששדה ה-TTL הוא חותמת זמן, יצירת אינדקס לשדה יכולה להשפיע על הביצועים בשיעורי תנועה גבוהים יותר. יצירת אינדקס לשדה של חותמת זמן עלולה ליצור נקודות חמות, וזה לא מומלץ. נקודות חמות הן טווחים מצומצמים של מסמכים שמתבצעות בהם פעולות קריאה, כתיבה ומחיקה בתדירות גבוהה.
הרשאות
לחשבון המשתמש שמגדיר מדיניות TTL נדרשת ההרשאה הבאה בפרויקט:
- כדי לראות את מדיניות ה-TTL צריך את ההרשאות
datastore.indexes.listו-datastore.indexes.get. - כדי לשנות מדיניות TTL צריך את ההרשאה
datastore.indexes.update. - כדי לבדוק את הסטטוס של פעולות TTL, צריך להשתמש ב-
datastore.operations.listוב-datastore.operations.get.
לרשימת התפקידים שכוללים את ההרשאות האלה, ראו Cloud Firestore תפקידים בניהול זהויות והרשאות גישה.
לפני שמתחילים
לפני שמשתמשים בפקודה gcloud CLI כדי לנהל מדיניות TTL, צריך להשתמש בפקודה gcloud components update כדי לעדכן את הרכיבים לגרסה האחרונה שזמינה:
gcloud components update
יצירת מדיניות TTL
כשיוצרים מדיניות TTL, מציינים שדה מסמך כזמן התפוגה של מסמכים באוסף.
התכונה TTL משתמשת בשדה שצוין כדי לזהות מסמכים שעומדים בדרישות למחיקה.
השדה הזה של TTL חייב להיות מסוג Timestamp או BSON Date. אפשר לבחור שדה שכבר קיים או להגדיר שדה שמתכננים להוסיף בהמשך.
לפני שמגדירים את הערך בשדה TTL, כדאי לקחת בחשבון את הנקודות הבאות:
הערך בשדה TTL יכול להיות מועד בעתיד, בהווה או בעבר. אם הערך הוא זמן בעבר, המסמך עומד בדרישות למחיקה באופן מיידי. לדוגמה, אפשר ליצור מדיניות TTL עם השדה
expireAt, ואז להוסיף אותה למסמכים קיימים.שימוש בסוג נתונים אחר או אי-הגדרה של ערך השדה TTL ישביתו את ה-TTL של המסמך הספציפי.
כדי ליצור מדיניות TTL, פועלים לפי השלבים הבאים:
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud.
בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Time-to-live (זמן החיים).
לוחצים על יצירת מדיניות.
מזינים שם לאוסף ושם של שדה חותמת הזמן.
לוחצים על יצירה.
המסוף חוזר לדף Time-to-live. אם הפעולה מתחילה בהצלחה, נוסף דף לרשומת המדיניות של TTL בטבלה. אם הפעולה נכשלת, מוצגת הודעת שגיאה בדף.
gcloud
משתמשים בפקודה
firestore fields ttls updateכדי להגדיר מדיניות TTL. מוסיפים את הדגל--asyncכדי למנוע מהפקודה gcloud CLI להמתין לסיום הפעולה.gcloud firestore fields ttls update ttl_field --collection-group=collection_name --enable-ttl
משך הזמן שבו מדיניות ה-TTL מופעלת
גם במסד נתונים ריק, יכולות לעבור עשר דקות או יותר עד שהמדיניות של TTL מופעלת. אחרי שמתחילים פעולה, סגירת הטרמינל לא מבטלת את הפעולה.
צפייה במדיניות ה-TTL
כדי לראות את מדיניות ה-TTL והסטטוס שלה, פועלים לפי השלבים הבאים:
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud.
בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על 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_name
צפייה בפרטי הפעולה
אפשר להשתמש בלחצן gcloud CLI כדי להציג פרטים נוספים על מדיניות TTL שנמצאת במצב CREATING.
משתמשים בפקודה operations list כדי לראות את כל הפעולות שפועלות ואת הפעולות שהסתיימו לאחרונה:
gcloud firestore operations list
התשובה כוללת הערכה של התקדמות הפעולה.
השבתת מדיניות בנושא TTL
כדי להשבית מדיניות TTL, פועלים לפי השלבים הבאים:
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud.
בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Time-to-live (זמן החיים).
בטבלת מדיניות ה-TTL, מחפשים את השורה של מדיניות ה-TTL. בשורה הזו בטבלה, לוחצים על הלחצן מחיקה (סמל פח האשפה).
לוחצים על מחיקה כדי לאשר את הפעולה.
המסוף חוזר לדף Time-to-live. אם הפעולה מצליחה, Cloud Firestore עם תאימות ל-MongoDB מסיר את מדיניות ה-TTL מהטבלה.
gcloud
משתמשים בפקודה
firestore fields ttls updateכדי להגדיר מדיניות TTL. מוסיפים את הדגל--asyncכדי למנוע מהפקודה gcloud CLI להמתין לסיום הפעולה.gcloud firestore fields ttls update ttl_field --collection-group=collection_name --disable-ttl
מעקב אחרי מחיקות של TTL
אפשר להשתמש ב-Cloud Monitoring כדי לראות מדדים לגבי מחיקות שמבוססות על TTL. Cloud Firestore עם תאימות ל-MongoDB מספק את המדדים הבאים ל-TTL:
| סוג מדד | שם המדד | תיאור המדד |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | מספר הפריטים שנמחקו בגלל הזמן שחלף |
המספר הכולל של מסמכים שנמחקו על ידי מדיניות TTL. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | עיכובים במחיקה בגלל תפוגה של זמן החיים |
הזמן שחלף בין מועד התפוגה של מסמך במסגרת מדיניות TTL לבין מועד המחיקה בפועל. |
כדי להגדיר לוח בקרה עם מדדים של Cloud Firestore עם תאימות ל-MongoDB, אפשר לעיין במאמרים בנושא ניהול לוח בקרה בהתאמה אישית והוספת ווידג'טים ללוח הבקרה.