בדף הזה נסביר איך להשתמש במסוף Google Cloud וב-Google Cloud CLI. כדי להגדיר כללי מדיניות של משך חיים (TTL). לפני שתקראו את הדף הזה, כדאי להבין את מודל הנתונים של Cloud Firestore.
סקירה כללית של משך החיים
שימוש במדיניות TTL כדי לבצע באופן אוטומטי להסיר נתונים לא פעילים ממסדי הנתונים שלכם. מדיניות TTL מגדירה שדה מסוים בתור זמן התפוגה של מסמכים בקבוצת אוסף נתונים נתונה. עם TTL, אפשר אפשר להפחית את עלויות האחסון על ידי ניקוי נתונים ישנים. בדרך כלל הנתונים נמחקים בתוך 24 שעות מתאריך התפוגה שלו.
תמחור
פעולות מחיקה של TTL נכללות בעלויות המחיקה של המסמכים. למחירים של פעולות מחיקה, ראו תמחור של Cloud Firestore.
מגבלות ומגבלות
- אפשר לסמן רק שדה אחד לכל קבוצת אוספים כשדה TTL.
- מותרות בסך הכול 200 הגדרות ברמת השדה. הגדרה של שדה אחד יכולה להכיל כמה מערכי הגדרות אישיות לאותו שדה. לדוגמה, פטור מהוספה לאינדקס בשדה יחיד ומדיניות TTL באותו שדה נספרים הגדרה של שדה אחד לקראת המגבלה.
- ללקוחות במצב Firestore במצב Datastore, לא ניתן להשתמש ב-TTL עם מצב בו-זמניות של אופטימיות לגבי קבוצות ישויות. כדאי לשנות את מצב בו-זמניות (concurrency) למצב בו-זמני (concurrency) אופטימי.
מחיקה של TTL
חשוב לשים לב להתנהגויות העיקריות הבאות של מחיקה מבוססת-TTL:
המחיקה באמצעות TTL היא לא תהליך מיידי. מסמכים שפג תוקפם ימשיכו להופיע בשאילתות ובבקשות חיפוש עד לתהליך ה-TTL ומוחק אותם. לוחות הזמנים למחיקת עסקאות ב-TTL לטובת הפחתה של העלות הכוללת של הבעלות על מחיקות. הנתונים נמחקים בדרך כלל תוך 24 שעות מתאריך התפוגה שלהם.
מחיקת מסמך באמצעות TTL לא מוחקת את אוספי המשנה שמתחת למסמך הזה.
החלת מדיניות TTL על קבוצת אוספים קיימת מובילה לכמות גדולה של פריטים מחיקה של כל הנתונים שהתוקף שלהם פג בהתאם למדיניות החדשה בנושא TTL. הערה גם המחיקה בכמות גדולה אינה מיידית ותלויה בכמות הנתונים קיימת קבוצת אוספים הזו.
אם למסמך יש זמן תפוגה בעבר ומוסיפים מדיניות TTL חדשה באוסף, המסמך יימחק תוך 24 שעות מרגע סיום ההגדרה של המדיניות בנושא TTL והיא תהיה פעילה.
הערך TTL לא בהכרח מוחק מסמכים באותו סדר שבו הם מופיעים חותמות זמן של תפוגה.
המחיקה לא מתבצעת באמצעות עסקאות. מסמכים עם תאריך תפוגה זהה לא בהכרח נמחקות בו-זמנית. אם אתם זקוקים להתנהגות הזו, תוכלו לבצע את המחיקה באמצעות ספריית לקוח.
Cloud Firestore תמיד יתבסס על שדה ה-TTL העדכני ביותר כדי לקבוע את התוקף. לדוגמה, אם תאריך התפוגה של מסמך פג אבל הוא עדיין לא נמחק, והשדה TTL עודכן לתאריך מאוחר יותר, תוקף המסמך לא יפוג והתאריך החדש ישמש.
TTL נועד לצמצם את ההשפעה על פעילויות אחרות של מסדי נתונים. מחיקות שמונעים באמצעות TTL, ההתייחסות אליהם בעדיפות נמוכה יותר. אסטרטגיות אחרות הן נוסף לכך כדי להפחית עליות חדות בתעבורת נתונים עקב מחיקות שנובעות מ-TTL.
מחיקה באמצעות קריאות TTL כולן פעילות האזנה לקובצי snapshot וטריגרים של Cloud Functions Cloud Firestore טריגרים.
שדות ואינדיקטורים של TTL
ניתן להוסיף שדה TTL לאינדקס או לבטל את ההוספה שלו לאינדקס. עם זאת, מכיוון ששדה TTL הוא חותמת זמן, הוספת השדה לאינדקס עשויה להשפיע על הביצועים בשיעורי תנועה גבוהים יותר. הוספה של שדה חותמת זמן לאינדקס יכולה ליצור נקודות לשיתוף אינטרנט, דבר שמנוגד לשיטות המומלצות. הנקודות לשיתוף אינטרנט הן קצבי קריאה, כתיבה ומחיקה גבוהים לטווח מסמכים מצומצם.
כברירת מחדל, הפונקציה Cloud Firestore יוצרת אינדקס של שדה יחיד לכל השדות. אפשר ליצור פטור מאינדקס של שדה יחיד כדי להשבית אינדקסים בשדה TTL.
הרשאות
לחשבון המשתמש שמגדיר מדיניות TTL נדרשת ההרשאה הבאה בפרויקט:
- כדי להציג את המדיניות בנושא TTL צריך להזין את
datastore.indexes.list
ו-datastore.indexes.get
. - כדי לשנות מדיניות של TTL נדרש
datastore.indexes.update
הרשאה. - כדי לבדוק את הסטטוס של פעולות TTL, צריך את
datastore.operations.list
ו-datastore.operations.get
.
לתפקידים שמקצים את ההרשאות האלה ראו Cloud Firestore תפקידים של ניהול זהויות והרשאות גישה (IAM).
לפני שמתחילים
לפני שמשתמשים ב-CLI של gcloud כדי לנהל כללי מדיניות TTL,
gcloud components update
הפקודה לעדכון הרכיבים לגרסה האחרונה הזמינה:
gcloud components update
יצירת מדיניות TTL
כשיוצרים מדיניות TTL, צריך להקצות שדה מסמך כמועד התפוגה של מסמכים בקבוצת אוספים.
TTL משתמש בשדה מסוים כדי לזהות מסמכים שעומדים בדרישות למחיקה.
שדה TTL הזה חייב להיות מסוג Date and time
. אתם יכולים לבחור שדה
קיים כבר, או להקצות שדה שאתם מתכננים להוסיף מאוחר יותר.
כדאי להביא בחשבון את הנקודות הבאות לפני שמגדירים את ערך השדה TTL:
הערך בשדה TTL יכול להיות תאריך עתידי, עכשיו או בעבר. אם הערך הוא זמן בעבר, המסמך יהיה מוכן למחיקה באופן מיידי. לדוגמה, יכול ליצור מדיניות TTL עם השדה
expireAt
, שאותו מוסיפים אל מסמכים קיימים.שימוש בסוג נתונים אחר או אי הגדרה של ערך השדה TTL משביתים את TTL במסמך הספציפי.
כדי ליצור מדיניות TTL, יש לבצע את השלבים הבאים:
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud.
בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Time-to-live.
לוחצים על Create Policy.
מזינים שם של קבוצת אוספים ושם שדה של חותמת זמן.
לוחצים על יצירה.
המסוף חוזר לדף 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
גם אם מסד נתונים ריק, ייתכן שיחלפו עשר דקות או יותר כדי להפעיל 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_group_name
צפייה בפרטי הפעולה
ב-CLI של gcloud אפשר לראות פרטים נוספים על המדיניות בנושא TTL
שנמצאים במצב CREATING
.
צריך להשתמש בפקודה operations list
כדי לראות את כל האפליקציות שפועלות וגם
פעולות שהושלמו לאחרונה:
gcloud firestore operations list
התגובה כוללת הערכה של התקדמות הפעולה.
השבתת מדיניות TTL
כדי להשבית מדיניות TTL, יש לפעול לפי השלבים הבאים:
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud.
בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על משך חיים.
בטבלת המדיניות בנושא TTL, מחפשים את השורה של המדיניות בנושא TTL. בתוך בשורה בטבלה, לוחצים על הלחצן מחיקה (פח אשפה).
מאשרים בלחיצה על מחיקה.
המסוף חוזר לדף 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) |
המספר הכולל של המסמכים שנמחקו בהתאם למדיניות TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | תפוגת זמן חיים לעיכובים במחיקה |
הזמן שעבר בין מועד פקיעת התוקף של המסמך באמצעות TTL המדיניות ומתי היא נמחקה בפועל. |
במאמרים ניהול לוח בקרה בהתאמה אישית והוספת ווידג'טים למרכז הבקרה מוסבר איך מגדירים מרכז בקרה עם מדדי Cloud Firestore.