מבוא לתצוגות מהותיות
תצוגות חומריות (materialized views) ב-BigQuery הן טבלאות שמחושבות מראש כדי לשפר את ביצועי השאילתות ולהפחית את עלויות ההרצה של שאילתות שמופעלות לעיתים קרובות ושאפשר לצפות את התוצאות שלהן. תצוגות חומריות פותרות בעיות של זמן אחזור של שאילתות ועלויות סריקה גבוהות כשמבצעים שאילתות חוזרות במערכי נתונים גדולים עם דפוסי צבירה צפויים. התצוגות החומריות ממזגות באופן אוטומטי נתונים שחושבו מראש עם שינויים שבוצעו לאחרונה בטבלאות הבסיס, וכך מבטיחות תוצאות עדכניות של שאילתות בלי שיהיה צורך בצינורות נתונים ידניים.
המסמך הזה מיועד למהנדסי נתונים, לאדמינים של מסדי נתונים ולמפתחים של בינה עסקית (BI), שתפקידם לתכנן צינורות ניתוח נתונים עם ביצועים גבוהים. כדי להטמיע תצוגות חומריות בהצלחה, צריך להכיר את המבנים של מערכי הנתונים ב-BigQuery, את פונקציות הצבירה של GoogleSQL ואת מבני העלויות של השאילתות.
היתרונות של תצוגות מהותיות
תרחישי השימוש הבאים מדגישים את היתרונות של תצוגות חומריות:
- עיבוד מוקדם של הנתונים. כדי לשפר את ביצועי השאילתות, כדאי להכין צבירות, מסננים, צירופים וקלאסטרים.
- האצה של מרכז הבקרה. העצמת כלי BI כמו Looker ששולחים שאילתות לעיתים קרובות לגבי אותם מדדים מצטברים – לדוגמה, משתמשים פעילים ביום.
- ניתוח נתונים בזמן אמת בשידורים גדולים. יכול לספק תשובות מהירות יותר לגבי טבלאות שמקבלות נתונים של עיבוד סטרימינג במהירות גבוהה.
- ניהול עלויות. להקטין את העלות של שאילתות חוזרות ויקרות במערכי נתונים גדולים.
מאפיינים מרכזיים
המאפיינים העיקריים של תצוגות חומריות כוללים את הדברים הבאים:
- ללא כל תחזוקה. מערכת BigQuery מבצעת חישוב מראש של תצוגות חומריות ברקע כשיש שינויים בטבלאות הבסיס. BigQuery מוסיף באופן אוטומטי שינויים מצטברים בנתונים מטבלאות בסיס לתצוגות חומריות, ללא צורך בפעולה מצד המשתמש.
נתונים עדכניים. תצוגות מהותיות מחזירות נתונים עדכניים. אם שינויים בטבלאות הבסיס עלולים לפגוע בתוקף של התצוגה החומרית, מערכת BigQuery קוראת את הנתונים ישירות מטבלאות הבסיס. אם השינויים בטבלאות הבסיס לא פוסלים את התצוגה החומרית, BigQuery קורא את שאר הנתונים מהתצוגה החומרית וקורא רק את השינויים מטבלאות הבסיס.
בתרשים הבא מוצגת הלוגיקה שמשמשת למיזוג שינויים בנתונים בזמן אמת:
התאמה חכמה. אם אפשר לפתור חלק כלשהו בשאילתה שמופנית למסד נתונים טבלאי באמצעות שליחת שאילתה של התצוגה החומרית, BigQuery מפנה מחדש את השאילתה לשימוש בתצוגה החומרית כדי לשפר את הביצועים והיעילות. מידע על האופן שבו כוונון חכם יכול לשפר שאילתות ועל המקרים שבהם הוא יכול לעשות זאת זמין במאמר בנושא שימוש בתצוגות חומריות.
התרשים הבא מציג את תהליך העבודה של ניתוב מחדש של שאילתות באמצעות התאמה חכמה:
סוגים של תצוגות מהותיות
יש שני סוגים בסיסיים של תצוגות חומריות:
- תצוגות חומריות מצטברות תומכות בקבוצה מוגבלת של תכונות. מידע נוסף על תחביר SQL נתמך לתצוגות מהותיות זמין במאמר יצירת תצוגות מהותיות. רק תצוגות חומריות מצטברות יכולות להפיק תועלת מהתאמה חכמה.
- תצוגות חומריות לא מצטברות תומכות ברוב התחביר שתצוגות חומריות מצטברות לא תומכות בו.
כשיוצרים תצוגות מהותיות, כברירת מחדל BigQuery מאפשר ליצור רק תצוגות שמבוססות על שאילתות מצטברות. כדי ליצור תצוגה לא מצטברת, אפשר לציין allow_non_incremental_definition = true בהגדרה של התצוגה המהותית.
הסוג הכי טוב של תצוגה חומרית שמתאים לשימוש תלוי במצב שלכם. בטבלה הבאה מוצגת השוואה בין התכונות של תצוגות חומריות מצטברות לבין תצוגות חומריות לא מצטברות:
| קטגוריה | מצטבר | Non-incremental |
|---|---|---|
| השאילתה נתמכת | מוגבלת | רוב השאילתות |
| עלות התחזוקה | יכולה להפחית את העלות של שאילתות שנמצאות בשימוש תדיר. במאמר עדכונים מצטברים מוסבר איך מתבצעים עדכונים של תצוגות חומריות. | כל רענון מריץ את השאילתה המלאה. |
| תמיכה בכוונון חכם | התמיכה קיימת ברוב השאילתות של תצוגות מפורטות. | לא |
| תוצאות תמיד עדכניות | יש תמיכה תצוגות מצטברות מחזירות תוצאות עדכניות של שאילתות גם אם טבלאות הבסיס השתנו מאז הרענון האחרון. | לא |
תצוגות מהותיות מורשות
אפשר ליצור תצוגה חומרית מורשית כדי לשתף קבוצת משנה של נתונים ממערך נתונים של מקור לתצוגה במערך נתונים משני. אחרי זה תוכלו לשתף את התצוגה הזו עם משתמשים וקבוצות ספציפיים (גורמים). החשבונות הראשיים יכולים לשלוח שאילתות לנתונים שאתם מספקים בתצוגה, אבל הם לא יכולים לגשת ישירות למערך הנתונים של המקור.
תצוגות מורשות ותצוגות מהותיות מורשות מורשות באותו אופן. פרטים נוספים מופיעים במאמר בנושא תצוגות מורשות.
אינטראקציה עם תכונות אחרות של BigQuery
התכונות הבאות של BigQuery פועלות באופן שקוף עם תצוגות חומריות:
הסבר על תוכנית לביצוע שאילתה. תוכנית השאילתה מציגה אילו תצוגות חומריות נסרקות (אם יש כאלה), וכמה בייטים נקראים מהתצוגות החומריות ומהטבלאות הבסיסיות יחד.
שמירת שאילתות במטמון. אפשר לשמור במטמון את התוצאות של שאילתה ש-BigQuery כותב מחדש באמצעות תצוגה חומרית, בכפוף למגבלות הרגילות (שימוש בפונקציות דטרמיניסטיות, ללא סטרימינג לטבלאות הבסיס וכו').
הגבלת עלויות. אם מציינים מגבלת בייטים לחיוב, ושאילתה קוראת נתונים שחורגים מהמגבלה הזו, השאילתה תיכשל ולא יחויב עליה תשלום, בין אם השאילתה משתמשת בתצוגות חומריות, בטבלאות הבסיס או בשניהם.
אומדן עלויות באמצעות הרצת בדיקה. הרצת סימולציה חוזרת על הלוגיקה של שכתוב השאילתה באמצעות התצוגות החומריות הזמינות, ומספקת אומדן עלות. אתם יכולים להשתמש בתכונה הזו כדי לבדוק אם שאילתה ספציפית משתמשת בתצוגות חומריות.
שכפול נתונים באזורים שונים. אפשר ליצור תצוגות מפורטות חומריות על טבלאות BigQuery שמופעלת בהן רפליקציה בכמה אזורים, אבל רק באזור הראשי. אם משתמשים באזור המשני, יכול להיות שתופיע הודעת השגיאה הבאה:
The dataset replica of the cross region dataset {PROJECT}:{DATASET} in region {REGION} is read-only because it's not the primary replica.
בנוסף לתכונות האלה, אפשר ליצור תצוגות חומריות מעל טבלאות עם תכונות ספציפיות, כמו שמתואר בקטעים הבאים.
טבלאות עם סימון נתונים שהשתנו (CDC)
אפשר ליצור תצוגות חומריות על טבלאות עם סימון נתונים שהשתנו (CDC) פעיל – תבנית שמשמשת להטמעה רציפה של שינויים במסד נתונים או בטבלה. התצוגות המפורטות האלה פועלות כמו תצוגות מפורטות בטבלאות BigQuery, כולל היתרונות של רענון אוטומטי. תצוגות מהותיות לא יכולות לבצע שאילתות מיזוג בזמן ריצה, ולכן צריך להגדיר תצוגות מהותיות עם max_staleness מספיק כדי למנוע משימות מיזוג בזמן ריצה. מידע נוסף מופיע בקטע מגבלות של תצוגות חומריות על טבלאות עם סימון נתונים שהשתנו (CDC) פעיל.
תמחור של תצוגות מהותיות
תצוגות מהותיות כרוכות בעלויות בדרכים הבאות:
- שליחת שאילתות לתצוגות מהותיות.
- תחזוקה של תצוגות מהותיות, למשל כשמבצעים רענון של תצוגות מהותיות. העלות של רענון אוטומטי מחויבת בפרויקט שבו נמצא התצוגה. העלות של רענון ידני מחויבת לפרויקט שבו מופעלת משימת הרענון הידני. מידע נוסף על שליטה בעלויות התחזוקה זמין במאמר בנושא תחזוקה של עבודות רענון.
- אחסון של טבלאות תצוגה מהותיות.
בטבלה הבאה מפורטים רכיבי התמחור של תצוגות חומריות:
| רכיב | תמחור על פי דרישה | תמחור לפי קיבולת |
|---|---|---|
| שליחת שאילתות | מספר הבייטים שעברו עיבוד בתצוגות מהותיות ובחלקים הנדרשים של טבלאות הבסיס.1 | השימוש ביחידות קיבולת (Slots) מתבצע בזמן השאילתה. |
| תחזוקה | בייטים שעובדו במהלך זמן הרענון. | יחידות הקיבולת (Slots) נצרכות במהלך זמן הרענון. |
| אחסון | בייט שמאוחסן בתצוגות מהותיות. | בייט שמאוחסן בתצוגות מהותיות. |
1במקרים שבהם הדבר אפשרי, BigQuery קורא רק את השינויים שבוצעו מאז הפעם האחרונה שבה התצוגה רועננה. מידע נוסף זמין במאמר בנושא עדכונים מצטברים.
פרטים על עלות האחסון
הדרך שבה BigQuery מאחסן ערכים מצטברים מסוימים משפיעה על אופן החישוב של גודל האחסון. במקרה של AVG, ARRAY_AGG ו-APPROX_COUNT_DISTINCT, הערכים המצטברים בתצוגה מומחשת לא נשמרים ישירות. במקום זאת, מערכת BigQuery מאחסנת באופן פנימי תצוגה חומרית כסקיצה ביניים, שמשמשת ליצירת הערך הסופי.
לדוגמה, נניח שיצרתם תצוגה מהותית באמצעות הפקודה הבאה:
CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS SELECT date, AVG(net_paid) AS avg_paid FROM project-id.my_dataset.my_base_table GROUP BY date
העמודה avg_paid מופיעה כ-NUMERIC או כ-FLOAT64, אבל
בפועל היא מאוחסנת כ-BYTES, והתוכן שלה הוא סקיצה ביניים בפורמט קנייני. בחישוב גודל הנתונים, העמודה נחשבת כ-BYTES.
תהליך העבודה 'תחילת העבודה'
הגדרת תצוגות חומריות כוללת את תהליך העבודה הבא:
- עיצוב ואימות של שאילתה. מנסחים את שאילתת הצבירה באמצעות ההנחיות של GoogleSQL.
- יצירת תצוגה מהותית. מריצים את ההצהרה
CREATE MATERIALIZED VIEWבאמצעות Google Cloud המסוף, כלי שורת הפקודה של BigQuery או BigQuery API. - הרצת כוונון חכם. מערכת BigQuery מפנה אוטומטית שאילתות שמופעלות על מסד נתונים טבלאי לשימוש בתצוגה החומרית – אין צורך לשכתב יעדים של שאילתות או אפליקציות.
כדי להתחיל ליצור, אפשר לעיין במאמר בנושא יצירת תצוגות מהותיות.