שימוש ב-Datastream עם טבלה קיימת ב-BigQuery

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

בעיה

בטבלה ב-BigQuery שמאוכלסת באמצעות BigQuery Storage Write API אי אפשר לבצע פעולות רגילות של שפת טיפול בנתונים (DML). כלומר, אחרי שזרם CDC מתחיל לכתוב לטבלה ב-BigQuery, אין דרך להוסיף נתונים היסטוריים שלא אוכלסו מראש בטבלה.

למשל, נבחן את התרחיש הבא:

  1. ‫TIMESTAMP 1: הפעולה של העתקת הטבלה מופעלת.
  2. TIMESTAMP 2: בזמן שהטבלה מועתקת, פעולות DML במקור גורמות לשינויים בנתונים (שורות מתווספות, מתעדכנות או מוסרות).
  3. ‫TIMESTAMP 3: מתחיל תהליך CDC, אבל שינויים שהתרחשו במהלך TIMESTAMP 2 לא נרשמים, ולכן יש אי התאמה בנתונים.

פתרון

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

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

דרישות מוקדמות

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

מקורות MySQL ו-Oracle

  1. יוצרים את ה-stream שבו רוצים להשתמש לרפליקציית ה-CDC המתמשכת, אבל לא מפעילים אותו. השידור צריך להיות במצב CREATED.
  2. כשתהיו מוכנים להתחיל את פעולת העתקת הטבלה, זהו את מיקום היומן הנוכחי של מסד הנתונים:
    • ב-MySQL, עיינו במסמכי התיעוד של MySQL כדי ללמוד איך לקבל את הקואורדינטות של היומן הבינארי של הרפליקציה. אחרי שמזהים את המיקום ביומן, סוגרים את הסשן כדי לבטל את הנעילות במסד הנתונים.
    • ב-Oracle, מריצים את השאילתה הבאה: SELECT current_scn FROM V$DATABASE.
  3. מעתיקים את הטבלה ממסד הנתונים של המקור ל-BigQuery.
  4. אחרי שהעתקה מסתיימת, פועלים לפי השלבים שמתוארים בדף ניהול זרמים כדי להתחיל את הזרם ממיקום היומן שזיהיתם קודם.

מקורות PostgreSQL

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