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

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

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

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

תמחור

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

מגבלות ומגבלות

  • ניתן לסמן רק שדה אחד לכל קבוצת איסוף כשדה TTL.
  • סה"כ מותרות 200 תצורות ברמת השדה. תצורת שדה אחת יכולה להכיל תצורות מרובות עבור אותו שדה. לדוגמה, פטור מהוספה של שדה יחיד ומדיניות TTL באותו שדה נחשבים לתצורת שדה אחת לקראת הגבול.
  • עבור לקוחות Firestore במצב Datastore, לא ניתן להשתמש ב-TTL עם מצב בו-זמנית של Optimistic With Entity Groups . שקול לשנות את מצב המקבילות בעקבות זה .

מחיקת TTL

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

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

  • מחיקת מסמך באמצעות TTL אינה מוחקת תת-אוספים תחת אותו מסמך.

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

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

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

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

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

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

  • מחיקה דרך TTL קוראת לכל מאזיני תמונת המצב הפעילים ומפעילה טריגרים של 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 .

לפני שאתה מתחיל

לפני שתשתמש ב-gcloud CLI לניהול מדיניות TTL, השתמש בפקודה gcloud components update כדי לעדכן רכיבים לגרסה האחרונה הזמינה:

gcloud components update

צור מדיניות TTL

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

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

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

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

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

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

Google Cloud Console

  1. ב-Google Cloud Platform Console, עבור לדף מסדי נתונים .

    עבור אל מסדי נתונים

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

  3. בתפריט הניווט, לחץ על זמן חיים .

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

  5. הזן שם קבוצת אוסף ושם שדה חותמת זמן.

  6. לחץ על צור .

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

gcloud

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

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

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

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

בצע את השלבים הבאים כדי להציג את מדיניות ה-TTL והסטטוסים שלה.

Google Cloud Console

  1. ב-Google Cloud Platform Console, עבור לדף מסדי נתונים .

    עבור אל מסדי נתונים

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

  3. בתפריט הניווט, לחץ על זמן חיים .

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

gcloud

השתמש בפקודה firestore fields ttls list כדי להגדיר מדיניות TTL. הפקודה הבאה מפרטת את כל מדיניות ה-TTL.

   gcloud firestore fields ttls list
   

כדי לרשום מדיניות TTL תחת קבוצת איסוף ספציפית, השתמש בדברים הבאים:

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

הצג את פרטי הפעולה

אתה יכול להשתמש ב-gcloud CLI כדי להציג פרטים נוספים על מדיניות TTL שנמצאת במצב CREATING .

השתמש בפקודה operations list כדי לראות את כל הפעולות הפועלות והסתיימו לאחרונה:

gcloud firestore operations list

התגובה כוללת אומדן התקדמות המבצע.

השבת מדיניות TTL

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

Google Cloud Console

  1. ב-Google Cloud Platform Console, עבור לדף מסדי נתונים .

    עבור אל מסדי נתונים

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

  3. בתפריט הניווט, לחץ על זמן חיים .

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

  5. אשר על ידי לחיצה על מחק .

הקונסולה חוזרת לעמוד זמן לחיות . עם הצלחה, Cloud Firestore מסירה את מדיניות ה-TTL מהטבלה.

gcloud

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

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

עקוב אחר מחיקות TTL

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

firestore.googleapis.com/document/ttl_deletion_count ספירת מחיקת זמן חיים

ספירה כוללת של מסמכים שנמחקו על ידי מדיניות זמן חיים (TTL).

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays תפוגה של זמן חיים לעיכובים במחיקה

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

כדי להגדיר לוח מחוונים עם מדדי Cloud Firestore, ראה ניהול לוח מחוונים מותאם אישית והוספת ווידג'טים של לוח מחוונים .