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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  5. לוחצים על Initiate backfill (הפעלת מילוי חוסרים).

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

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

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

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

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

  • שרת SQL
  • Spanner
  • Oracle
  • PostgreSQL
  • MySQL

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

  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. אם בחרתם רק אובייקט אחד, לוחצים בתיבת הדו-שיח על הפסקת מילוי הרקע של האובייקט. אחרת, אם בחרתם כמה אובייקטים, לוחצים על הפסקת מילוי חוסרים של אובייקטים.

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

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

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