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