כדי לנתח עדכונים של לכידת נתוני שינוי (CDC) מהמקורות שלכם כמעט בזמן אמת, אתם יכולים להזרים אותם ל-BigQuery באמצעות Datastream. כשמגדירים יעד ב-BigQuery, בוחרים איך Datastream יארגן את מערכי הנתונים, בוחרים מצב כתיבה של מיזוג או של הוספה בלבד, ומגדירים מגבלה על עדכניות הנתונים.
ההרשאות הנדרשות
Datastream משתמש בתמיכה המובנית של BigQuery בעדכונים של סימון נתונים שהשתנו (CDC). Datastream מעדכן את הטבלאות ב-BigQuery על ידי עיבוד ויישום של שינויים בסטרימינג באמצעות BigQuery Storage Write API (gRPC).
ההרשאות שנדרשות לשימוש ב-API ולהעברת נתונים ל-BigQuery מוענקות לתפקיד Datastream Service Agent.
הגדרת BigQuery כיעד
כדי להגדיר את Datastream להזרמה אל BigQuery, מבצעים את השלבים הבאים:
- מוודאים ש-BigQuery API מופעל בפרויקט Google Cloud.
- אם אתם רוצים להשתמש באפשרות Single dataset for all schemas, צרו מערך נתונים ב-BigQuery.
- מגדירים את מערך הנתונים של היעד בשביל הסטרימינג.
- הגדרת מצב כתיבה
- מציינים את מגבלת העדכניות המקסימלית של הנתונים בזרם.
הגדרת מערכי נתונים של היעד
מערכי נתונים הם קונטיינרים ברמה העליונה שמשמשים לארגון ולשליטה על הגישה לטבלאות ב-BigQuery.
כשמגדירים מערכי נתונים ליעד ב-BigQuery באמצעות Datastream, אפשר לבחור אחת מהאפשרויות הבאות:
קבוצת נתונים לכל סכימה: Datastream בוחר או יוצר באופן אוטומטי את קבוצת הנתונים במיקום ב-BigQuery שצוין, על סמך שם הסכימה של המקור. כתוצאה מכך, לכל סכימה במקור יש מערך נתונים תואם ב-BigQuery. לדוגמה, אם יש לכם מקור MySQL, ובמקור הזה יש מסד נתונים
mydbוטבלהemployeesבתוך מסד הנתונים, אז Datastream יוצר את מערך הנתוניםmydbואת הטבלהemployeesב-BigQuery.Datastream יוצר מערכי נתונים בפרויקט שבחרתם. כברירת מחדל, הפרויקט הנוכחי שלכם נבחר. ברשימת מערכי הנתונים מוצגים מערכי הנתונים שזמינים בפרויקט שנבחר. לא חייבים ליצור את מערכי הנתונים באותו אזור שבו נמצא הסטרימינג, אבל מומלץ לשמור את כל המשאבים של הסטרימינג ושל מערכי הנתונים באותו אזור כדי לשפר את העלויות והביצועים.
קבוצת נתונים אחת לכל הסכימות: בוחרים קבוצת נתונים ב-BigQuery בשביל הסטרימינג. מקור הנתונים מעביר את כל הנתונים למערך הנתונים הזה. במערך הנתונים שתבחרו, Datastream ייצור את כל הטבלאות בתור
<schema>_<table>.לדוגמה, אם יש לכם מקור MySQL, ובמקור הזה יש מסד נתונים
mydbוטבלהemployeesבתוך מסד הנתונים, Datastream יוצר את הטבלהmydb_employeesבמערך הנתונים שבחרתם.אפשר לבחור מערך נתונים מכל פרויקט ב- Google Cloud . כברירת מחדל, מוצגות קבוצות הנתונים מהפרויקט הנוכחי. אפשר גם ליצור מערך נתונים חדש בפרויקט שנבחר.
הגדרת מצב כתיבה
יש שני מצבים שבהם אפשר להגדיר איך הנתונים ייכתבו ב-BigQuery:
מיזוג: זהו מצב הכתיבה שמוגדר כברירת מחדל. כשבוחרים באפשרות הזו, BigQuery משקף את האופן שבו הנתונים מאוחסנים במסד הנתונים של המקור. המשמעות היא ש-Datastream כותב את כל השינויים בנתונים שלכם ל-BigQuery, ו-BigQuery מאחד את השינויים עם הנתונים הקיימים, וכך יוצר טבלאות סופיות שהן העתקים של טבלאות המקור. במצב מיזוג, לא נשמר תיעוד היסטורי של אירועי השינוי. לדוגמה, אם מוסיפים שורה ואז מעדכנים אותה, BigQuery שומר רק את הנתונים המעודכנים. אם תמחקו את השורה מטבלת המקור, לא יישאר ב-BigQuery תיעוד של השורה הזו.
הוספה בלבד: מצב הכתיבה 'הוספה בלבד' מאפשר להוסיף נתונים ל-BigQuery כזרם של שינויים (אירועים מסוג
INSERT,UPDATE-INSERT,UPDATE-DELETEו-DELETE). כדאי להשתמש במצב הזה כשרוצים לשמור את המצב ההיסטורי של הנתונים.כדי להבין טוב יותר את מצב הכתיבה "הוספה בלבד", כדאי לעיין בתרחישים הבאים:
- מילוי חוסרים ראשוני: אחרי מילוי החוסרים הראשוני, כל האירועים נכתבים ב-BigQuery כאירועים מסוג
INSERT, עם חותמת זמן, מזהה ייחודי אוניברסלי (UUID) ומספר סידורי שינויים זהים. - עדכון של מפתח ראשי: כשמפתח ראשי משתנה, שתי שורות נכתבות ב-BigQuery:
- שורה של
UPDATE-DELETEעם המפתח הראשי המקורי - שורה ב-
UPDATE-INSERTעם המפתח הראשי החדש
- שורה של
- עדכון שורה: כשמעדכנים שורה, שורה אחת של
UPDATE-INSERTנכתבת ב-BigQuery - מחיקת שורה: כשמוחקים שורה, שורה אחת של
DELETEנכתבת ב-BigQuery
- מילוי חוסרים ראשוני: אחרי מילוי החוסרים הראשוני, כל האירועים נכתבים ב-BigQuery כאירועים מסוג
הגדרת מגבלת עדכניות הנתונים
BigQuery מחיל שינויים במקור ברקע באופן שוטף, או בזמן הרצת השאילתה, בהתאם למגבלת העדכניות של הנתונים שהוגדרה. כש-Datastream יוצר טבלה חדשה ב-BigQuery, האפשרות max_staleness של הטבלה מוגדרת בהתאם לערך הנוכחי של מגבלת העדכניות של הנתונים בסטרים. כך מוודאים שהטבלה אף פעם לא חורגת ממגבלת העדכניות שהוגדרה. מגבלת העדכניות של הנתונים לא משפיעה על התדירות של משימות המיזוג ב-BigQuery.
מידע נוסף על שימוש בטבלאות ב-BigQuery עם האפשרות max_staleness זמין במאמר Table staleness.