שמירת הערך העדכני ביותר בלבד

בדף הזה מתוארת אסטרטגיה שמאפשרת לשמור רק את הערך האחרון בעמודה בטבלת Bigtable.

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

כדי לשמור רק את הערך האחרון, מומלץ להשתמש בגישה של מחיקה ואז כתיבה כדי להגביל את העמודות בטבלה רק לתא אחד.

מחיקה ואז כתיבה

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

בדוגמה הבאה של קוד מדומה ב-Java אפשר לראות איך זה עובד. הסדר חשוב: המחיקה צריכה להתבצע לפני הכתיבה.

RowMutation mutation = RowMutation.create(TABLE, ROW_KEY)
                .deleteCells(COLUMN_FAMILY, COLUMN_QUALIFIER, Range.TimestampRange.unbounded())
                .setCell((COLUMN_FAMILY, COLUMN_QUALIFIER, TIMESTAMP, VALUE);
dataClient.mutateRow(mutation);

עליך לספק את הפרטים הבאים:

  • TABLE: מזהה הטבלה
  • COLUMN_FAMILY: קבוצת העמודות שמכילה את העמודה
  • COLUMN_QUALIFIER: מגדיר העמודה שרוצים למחוק וליצור מחדש
  • TIMESTAMP: חותמת הזמן החדשה
  • VALUE: הערך החדש של העמודה

חותמת זמן של אפס

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

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

המאמרים הבאים