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

בדף הזה מפורטות שיטות מומלצות לתרחישי שימוש שבהם:

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

בעיה

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

מקורות MySQL ו-Oracle

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

מקורות PostgreSQL

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