ניהול מילוי חוסרים באובייקטים של סטרימינג

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

אם סימנתם את תיבת הסימון Backfill historical data (מילוי חוסרים בנתונים היסטוריים), מערכת Datastream תזרים את כל הנתונים הקיימים, בנוסף לשינויים בנתונים, מהמקור ליעד.

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

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

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

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

סטטוסים של אובייקטים

הסטטוסים השונים במחזור החיים של הפעלה והפסקה של מילוי חוסרים באובייקט כוללים:

  • אין סטטוס (מוצג בממשק המשתמש כ--): הסיבות לכך שאובייקט מקבל את הסטטוס הזה כוללות:

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

  • Active: מתבצעת מילוי חוסרים לאובייקט.

  • Completed: מילוי חוסרים הושלם עבור האובייקט.

  • Stopped: מילוי חוסרים נעצר עבור האובייקט. אם מפעילים שוב מילוי חוסרים לאובייקט, Datastream ישדר את כל הנתונים הקיימים שמשויכים לאובייקט ממקור הנתונים ליעד.

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

הפעלת מילוי חוסרים

  1. נכנסים לדף Streams במסוף Google Cloud .

    מעבר לדף העדכונים

  2. לוחצים על הזרם שמכיל אובייקטים שרוצים להפעיל עבורם מילוי חוסרים.

  3. לוחצים על הכרטיסייה Objects.

  4. מסמנים את התיבה לצד כל אובייקט שרוצים להפעיל עבורו מילוי חוסרים.

  5. לוחצים על Initiate backfill.

  6. אם בחרתם רק אובייקט אחד, לוחצים בתיבת הדו-שיח על הפעלת מילוי חוסרים של אובייקט. אחרת, אם בחרתם כמה אובייקטים, לוחצים על הפעלת מילוי חוסרים של אובייקטים.

    תהליך האכלת נתונים היסטוריים יתחיל עבור האובייקטים שבחרתם, והסטטוס של כל אובייקט ישתנה מ-Pending ל-Active ואז ל-Completed. כשהסטטוס של אובייקט הוא Completed, המשמעות היא ש-Datastream קרא את כל הנתונים של האובייקט, אבל יכול להיות שהנתונים עדיין נטענים ליעד.

הפעלת מילוי חלקי של נתונים היסטוריים

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

‫Datastream תומך במילוי חלקי של נתונים היסטוריים במקורות הבאים:

  • שרת SQL
  • Spanner
  • Oracle
  • PostgreSQL

כדי להתחיל מילוי חלקי של שטחי פרסום:

  1. נכנסים לדף Streams במסוף Google Cloud .

    מעבר לדף העדכונים

  2. לוחצים על הזרם שמכיל אובייקטים שרוצים להפעיל עבורם מילוי חוסרים.

  3. לוחצים על הכרטיסייה Objects.

  4. בוחרים את האובייקט שרוצים להפעיל עבורו מילוי חוסרים.

  5. לוחצים על Initiate backfill.

  6. בחלונית שמופיעה, מסמנים את התיבה הפעלת מסנן בהתאמה אישית.

  7. מזינים את פסוקית ה-SQL‏ WHERE. לדוגמה, product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'.

  8. לוחצים על Initiate backfill.

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

תחביר נתמך של מסננים מותאמים אישית

כשמספקים מסנן בהתאמה אישית, Datastream תומך בקבוצת משנה בסיסית של תחביר משפטי SQL WHERE. האלמנטים הנתמכים כוללים:

  • אופרטורים לוגיים: AND, OR
  • אופרטורים להשוואה: =, <, >, <=, >=, !=
  • תנאים: IN, NOT IN, IS NULL, IS NOT NULL
  • קיבוץ: סוגריים () להגדרת קבוצות של תנאים
  • ערכים:

    • מחרוזות: טקסט שמוקף במירכאות בודדות, לדוגמה, 'value',
    • מספרים: מספרים שלמים (123), מספרים עשרוניים (123.45), מספרים שליליים (-10) ומספרים עם חזקות (1.2e3).
    • ערכים בוליאניים: מילות מפתח תלויות רישיות TRUE או FALSE.
  • מזהים:

    • הסמכה: אפשר לציין את שמות העמודות באופן מלא באמצעות נקודות כדי לציין את הסכימה או הטבלה, לדוגמה, myColumn,‏ myTable.myColumn או mySchema.myTable.myColumn.
    • מזהים ללא מרכאות: יכולים להכיל אותיות, מספרים וקווים תחתונים, וחייבים להתחיל באות או בקו תחתון. השימוש באותיות רישיות או קטנות בשמות של עמודות או טבלאות תלוי במסד הנתונים של היעד.
    • מזהים עם מירכאות כפולות: צריך לתחום אותם במירכאות כפולות (").

מגבלות על מילוי חלקי של שטחי פרסום

יש הצהרות, אופרטורים ומילות מפתח שאסור להשתמש בהם, ושימוש בהם יגרום לשגיאה. למשל:

  • תגובות, כמו -- או /* */.
  • פונקציות, לדוגמה, UPPER(column) ו-NOW().
  • ביטויים אריתמטיים, לדוגמה, column + 1 > 10.
  • האופרטור LIKE. אין תמיכה בתווים כלליים לחיפוש כמו % או _ עם LIKE.
  • האופרטור BETWEEN. במקומה, צריך להשתמש ב->= וב-<=.
  • לדוגמה, שאילתות משנה, (SELECT ...) בתוך פסוקית WHERE.
  • CASE דוחות, לדוגמה, CASE WHEN ... END.
  • השוואות בין עמודות, כמו column1 = column2. ההשוואות צריכות להיות מול ערכים מילוליים.
  • DATE וTIME סוגים או פונקציות ספציפיים.
  • אופרטורים ספציפיים למערך או ל-JSON.
  • המרה מפורשת: לדוגמה, CAST(column AS INT).

הפסקת מילוי החסר

  1. נכנסים לדף Streams במסוף Google Cloud .

    מעבר לדף העדכונים

  2. לוחצים על הזרם שמכיל את האובייקטים שרוצים להפסיק את המילוי החוזר שלהם.

  3. לוחצים על הכרטיסייה Objects.

  4. מסמנים את התיבה לצד כל אובייקט שרוצים להפסיק את המילוי החוזר שלו.

  5. לוחצים על הפסקת מילוי חוסרים.

  6. אם בחרתם רק אובייקט אחד, לוחצים בתיבת הדו-שיח על Stop object backfill. אחרת, אם בחרתם כמה אובייקטים, לוחצים על הפסקת מילוי חוסרים של אובייקטים.

    מערכת Datastream תפסיק את האכלת הנתונים ההיסטוריים של האובייקטים שבחרתם, והסטטוס של כל אובייקט ישתנה ל-Stopped.

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

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