שמירת נתונים עם תכונות של חזרה בזמן ומניעת כשל

במסמך הזה מתוארים חלונות שמירת הנתונים של מסע בזמן ושל מנגנון למניעת כשלים במערכי נתונים. במהלך תקופות ה-time travel וה-fail-safe, הנתונים ששיניתם או מחקתם בכל טבלה במערך הנתונים ממשיכים להיות מאוחסנים למקרה שתצטרכו לשחזר אותם.

מסע בזמן ושמירת נתונים

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

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

הגדרת חלון הזמן של התכונה 'חזרה בזמן'

אתם מגדירים את חלון הזמן של Time Travel ברמת מערך הנתונים או ברמת הפרויקט. ההגדרות האלה יחולו על כל הטבלאות שמשויכות למערך הנתונים או לפרויקט.

הגדרת חלון הזמן של Time Travel ברמת הפרויקט

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

הגדרת חלון זמן לנסיעה אחורה בזמן ברמת מערך הנתונים

כדי לציין או לשנות את חלון הזמן של Time Travel למערך נתונים, אפשר להשתמש בCloud de Confiance מסוף, בכלי שורת הפקודה של BigQuery או ב-BigQuery API.

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

כשמשנים את חלון הזמן של מסע בזמן, אם חותמת הזמן מציינת זמן מחוץ לחלון הזמן של מסע בזמן, או לפני שהטבלה נוצרה, השאילתה נכשלת ומוחזרת שגיאה כמו הבאה:

Table ID was created at time which is
before its allowed time travel interval timestamp. Creation
time: timestamp

איך פועל מסע בזמן

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

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

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

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

לכן, שינוי של תא אחד יכול לגרום לשליחה של יותר נתונים ל-Time Travel מאשר רק גודל השינוי.

איך חלון הזמן של Time Travel משפיע על שחזור של טבלה ושל מערך נתונים

טבלה או מערך נתונים שנמחקו משתמשים במשך הזמן של חלון הנסיעה בזמן שהיה בתוקף בזמן המחיקה.

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

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

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

מסע בזמן וגישה ברמת השורה

אם בטבלה יש כללי מדיניות של גישה ברמת השורה, או שהיו בה כללי מדיניות כאלה, רק חשבון משתמש שקיבל את ההרשאה הבאה של ניהול זהויות והרשאות גישה (IAM) יכול לגשת לנתונים היסטוריים של הטבלה:

הרשאה משאב
bigquery.rowAccessPolicies.overrideTimeTravelRestrictions הטבלה שאליה מתבצעת גישה לנתונים היסטוריים

תפקידי ה-IAM המוגדרים מראש הבאים מספקים את ההרשאה bigquery.rowAccessPolicies.overrideTimeTravelRestrictions:

תפקיד משאב
roles/bigquery.admin הטבלה שאליה מתבצעת גישה לנתונים היסטוריים
roles/bigquery.studioAdmin הטבלה שאליה מתבצעת גישה לנתונים היסטוריים
roles/iam.databasesAdmin הטבלה שאליה מתבצעת גישה לנתונים היסטוריים

אפשר גם להעניק את ההרשאה bigquery.rowAccessPolicies.overrideTimeTravelRestrictions באמצעות תפקיד בהתאמה אישית.

  • מריצים את הפקודה הבאה כדי לקבל את הזמן המקביל של מערכת Unix על ידי העברת חותמת הזמן של UTC:

    date -d '2023-08-04 16:00:34.456789Z' +%s000
  • מחליפים את ראשית זמן יוניקס (Unix epoch)‏ 1691164834000 שהתקבל מהפקודה הקודמת בכלי שורת הפקודה של BigQuery. מריצים את הפקודה הבאה כדי לשחזר עותק של הטבלה שנמחקה deletedTableID בטבלה אחרת restoredTable, באותו מערך נתונים myDatasetID:

    bq cp myProjectID:myDatasetID.deletedTableID@1691164834000 myProjectID:myDatasetID.restoredTable

מנגנון למניעת כשלים

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

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

  • מחיקה או החלפה של טבלה: כשמוחקים טבלה או כשמחליפים את הנתונים שלה באופן מלא (לדוגמה, באמצעות WRITE_TRUNCATE המאפיין write disposition בעבודת טעינה או באמצעות הפקודה CREATE OR REPLACE TABLE ), התוכן הקודם של הטבלה נשמר.
  • מחיקת מחיצה: אם מחיצה ספציפית נמחקת מטבלה עם מחיצות, הנתונים ששייכים למחיצה הספציפית הזו נשמרים. לא תהיה השפעה על מחיצות אחרות בטבלה.

אי אפשר לשלוח שאילתות או לשחזר נתונים ישירות באחסון בטוח. כדי לשחזר נתונים מאחסון בטוח מפני כשלים, צריך לפנות אל Cloud Customer Care.

חיוב

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

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

בטבלה הבאה מוצגת השוואה בין עלויות אחסון פיזי ועלויות אחסון לוגי:

מודל חיוב על מה משלמים?
אחסון פיזי (דחוס)
  • אתם משלמים על בייטים פעילים
  • אתם משלמים על אחסון לטווח ארוך
  • תשלום על אחסון של נסיעות בזמן
  • אתם משלמים על אחסון בטוח
אחסון לוגי (לא דחוס) (הגדרת ברירת מחדל)
  • תשלום על אחסון פעיל
  • תשלום על אחסון לטווח ארוך
  • לא משלמים על אחסון של נסיעה בזמן
  • לא משלמים על אחסון בטוח

אם אתם משתמשים באחסון פיזי, תוכלו לראות את מספר הבייטים שמשמשים את התכונות 'חזרה בזמן' ו'מצב בטוח' בעמודות TIME_TRAVEL_PHYSICAL_BYTES ו-FAIL_SAFE_PHYSICAL_BYTES בתצוגות TABLE_STORAGE ו-TABLE_STORAGE_BY_ORGANIZATION. דוגמה לשימוש באחת מהתצוגות האלה כדי להעריך את העלויות מופיעה במאמר בנושא תחזית החיובים על אחסון.

עלויות האחסון חלות על נתונים שמאוחסנים ב-BigQuery לצורך שימוש בתכונות 'חזרה בזמן' ו'מצב בטוח', אבל אתם מחויבים רק אם לא חלות עלויות אחסון נתונים במקומות אחרים ב-BigQuery. הפרטים הבאים רלוונטיים:

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

דוגמה לשמירת נתונים

בטבלה הבאה אפשר לראות איך נתונים שנמחקו או שונו עוברים בין חלונות שמירה של נתונים. בדוגמה הזו, נפח האחסון הכולל הפעיל הוא 200GiB, ונמחקו 50GiB עם חלון זמן של שבעה ימים לשימוש בתכונה 'חזרה בזמן':

יום 0 היום הראשון היום השני יום 3 יום 4 יום 5 יום 6 יום 7 יום 8 יום 9 יום 10 יום 11 יום 12 יום 13 יום 14 יום 15
אחסון פעיל 200 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150
אחסון של נסיעות בזמן 50 50 50 50 50 50 50
אחסון בטוח 50 50 50 50 50 50 50

מחיקת נתונים מאחסון פיזי לטווח ארוך פועלת באותו אופן.

מגבלות

אחזור נתונים באמצעות 'מסע בזמן' כפוף למגבלות הבאות:

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