באמצעות Datastream אתם יכולים לשכפל נתוני שינויים מהמקורות ישירות לטבלאות ב-BigQuery, כדי לבצע ניתוח נתונים כמעט בזמן אמת. כשמעבירים נתונים בסטרימינג ל-BigQuery, אפשר לבחור במצב כתיבה של מיזוג או הוספה בלבד, ולהשתמש בעמודה datastream_metadata כדי לעקוב אחרי אירועי שינוי. אתם יכולים גם ליישם שיטות מומלצות לניהול עלויות, כמו הזמנת משבצות וכוונון של טבלאות לא עדכניות, ולעיין במגבלות הידועות.
איך פועלת הכתיבה
הגודל המקסימלי של אירוע כשמעבירים נתונים בסטרימינג ל-BigQuery הוא 20MB.
כשמגדירים את הסטרימינג, אפשר לבחור את הדרך שבה Datastream יכתוב את נתוני השינויים ב-BigQuery. מידע נוסף זמין במאמר הגדרת מצב כתיבה.
מטא-נתונים של טבלה
Datastream מוסיף עמודת STRUCT בשם datastream_metadata לכל טבלה שנכתבת ביעד ב-BigQuery.
מצב כתיבה של מיזוג
אם לטבלה יש מפתח ראשי במקור, העמודה מכילה את השדות הבאים:
-
UUID: השדה הזה הוא מסוג הנתוניםSTRING. -
SOURCE_TIMESTAMP: השדה הזה הוא מסוג הנתוניםINTEGER.
אם לטבלה אין מפתח ראשי, העמודה מכילה שדה נוסף: IS_DELETED. השדה הזה הוא מסוג הנתונים BOOLEAN, והוא מציין אם הנתונים ש-Datastream מעביר ליעד משויכים לפעולת DELETE במקור. טבלאות בלי מפתחות ראשיים הן טבלאות שרק מוסיפים להן נתונים.
מצב כתיבה של הוספה בלבד
העמודה datastream_metadata מכילה את אותם שדות לטבלאות עם מפתחות ראשיים ולטבלאות בלי מפתחות ראשיים:
-
UUID: השדה הזה הוא מסוג הנתוניםSTRING. -
SOURCE_TIMESTAMP: השדה הזה הוא מסוג הנתוניםINTEGER. -
CHANGE_SEQUENCE_NUMBER: השדה הזה הוא מסוג הנתוניםSTRING. זהו מספר סידורי פנימי שמשמש את Datastream לכל אירוע שינוי. -
CHANGE_TYPE: השדה הזה הוא מסוג הנתוניםSTRING. הוא מציין את סוג אירוע השינוי:INSERT,UPDATE-INSERT,UPDATE-DELETEאוDELETE. -
SORT_KEYS: השדה הזה מכיל מערך של ערכיSTRING. אתם יכולים להשתמש בערכים כדי למיין את אירועי השינויים.
שליטה בעלויות של BigQuery
העלויות של BigQuery מחויבות בנפרד מ-Datastream. כדי ללמוד איך לשלוט בעלויות של BigQuery, ראו תמחור BigQuery CDC.
שיטות מומלצות לניהול עלויות
כשמשתמשים ב-Datastream עם BigQuery כיעד, כדאי להביא בחשבון את השיטות המומלצות הבאות לניהול עלויות:
- הבנת העלויות של CDC ב-BigQuery: כשמשתמשים ב-Datastream עם BigQuery כיעד, סימון נתונים שהשתנו (CDC) כולל פעולות מיזוג ברקע. כברירת מחדל, משימות ברקע של הטמעת CDC ב-BigQuery שמתבצעות בלי הקצאת הזמנה של
BACKGROUNDאוBACKGROUND_CHANGE_DATA_CAPTUREב-BigQuery, משתמשות בתמחור על פי דרישה. - שימוש במקומות שמורים ב-BigQuery: כדי לנהל ולהגביל את העלויות שקשורות למשימות המיזוג של CDC, מומלץ לרכוש מקום שמור של יחידת קיבולת ב-BigQuery. כך אתם מקבלים קיבולת קבועה במחיר קבוע, והעלויות שלכם צפויות יותר. מידע נוסף זמין במאמר הגדרת הזמנה ב-BigQuery לשימוש עם הטמעת CDC.
- כוונון של
max_staleness: הפרמטרmax_stalenessב-BigQuery הוא פשרה ישירה בין עדכניות הנתונים לבין העלות. ערך נמוך יותר פירושו פעולות מיזוג תכופות יותר ועלויות גבוהות יותר, אבל הנתונים עדכניים יותר. כדאי להגדיר את הפרמטר הזה לרמה שעומדת בדרישות העסקיות שלכם לגבי עדכניות הנתונים, בלי לחרוג מהתקציב. מידע נוסף זמין במאמר ניהול טבלאות לא עדכניות.
מגבלות ידועות
המגבלות הידועות בשימוש ב-BigQuery כיעד כוללות:
- כברירת מחדל, Datastream לא תומך בהוספת מפתח ראשי לטבלה שכבר שוכפלה ל-BigQuery בלי מפתח ראשי, או בהסרת מפתח ראשי מטבלה ששוכפלה ל-BigQuery עם מפתח ראשי. אם אתם צריכים לבצע שינויים כאלה, פנו לתמיכה של Google. כדי לקבל מידע על שינוי ההגדרה של המפתח הראשי בטבלת מקור שכבר יש לה מפתח ראשי, קראו את המאמר אבחון בעיות.
המפתחות הראשיים ב-BigQuery חייבים להיות מסוגי הנתונים הבאים:
DATEBOOLGEOGRAPHYINT64NUMERICBIGNUMERICSTRINGTIMESTAMPDATETIME
טבלאות שמכילות מפתחות ראשיים של סוגי נתונים לא נתמכים לא משוכפלות על ידי Datastream.
ב-BigQuery אי אפשר להשתמש בשמות של טבלאות עם התווים
.,$,/,@או+. כשהוא יוצר טבלאות יעד, Datastream מחליף את התווים האלה בקו תחתון.לדוגמה,
table.nameבמסד הנתונים של המקור הופך ל-table_nameב-BigQuery.למידע נוסף על שמות של טבלאות ב-BigQuery, קראו את המאמר מתן שמות לטבלאות.
ב-BigQuery אפשר להגדיר עד ארבע עמודות אשכולות. כשמשכפלים טבלה עם יותר מארבע עמודות של מפתחות ראשיים, Datastream משתמש בארבע עמודות של מפתחות ראשיים כעמודות אשכולות.
Datastream ממפה ערכים מילוליים של תאריך ושעה מחוץ לטווח, כמו סוגי תאריכים אינסופיים של PostgreSQL, לערכים הבאים:
DATEחיובי בערך של9999-12-31DATEשלילי בערך של0001-01-01TIMESTAMPחיובי בערך של9999-12-31 23:59:59.999000 UTCTIMESTAMPשלילי בערך של0001-01-01 00:00:00 UTC
ב-BigQuery אין תמיכה בטבלאות סטרימינג עם מפתחות ראשיים מסוגי הנתונים
FLOATאוREAL. טבלאות כאלה לא משוכפלות. מידע נוסף על סוגי הנתונים והטווחים של BigQuery זמין במאמר סוגי נתונים.אם המקור הוא Salesforce או Salesforce Marketing Cloud (גרסת טרום-השקה (Preview)), אפשרות ההגדרה Dataset for each schema לא נתמכת.