מבוא לתצוגות מהותיות
תצוגות חומריות הן תצוגות שמחושבות מראש ומאחסנות מעת לעת את התוצאות של שאילתת SQL. במקרים מסוימים, תצוגות חומריות מקטינות את זמן העיבוד הכולל ואת העלויות הנלוות, כי הן מקטינות את כמות הנתונים שצריך לסרוק עבור כל שאילתה. אפשר להריץ שאילתות על תצוגות חומריות כמו על משאבי נתונים אחרים.
היתרונות של תצוגות מהותיות
תרחישי השימוש הבאים מדגישים את היתרונות של תצוגות חומריות:
- עיבוד מוקדם של הנתונים. כדי לשפר את הביצועים של השאילתות, כדאי להכין צבירות, מסננים, צירופים ואשכולות.
- האצה במרכז הבקרה. העצמת כלי 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) פעיל.
טבלאות שמופעל בהן מטמון של מטא-נתונים ב-BigLake
תצוגות חומריות מעל טבלאות עם מטמון מטא-נתונים של BigLake יכולות להפנות לנתונים מובנים שמאוחסנים ב-Cloud Storage וב-Amazon Simple Storage Service (Amazon S3). התצוגות המגובות האלה פועלות כמו תצוגות מגובות בטבלאות אחסון שמנוהלות על ידי BigQuery, כולל היתרונות של רענון אוטומטי וכוונון חכם. יתרונות נוספים כוללים צבירה מראש, סינון מראש וצירוף מראש של נתונים שמאוחסנים מחוץ ל-BigQuery. תצוגות חומריות של טבלאות BigLake מאוחסנות ב-אחסון מנוהל של BigQuery ויש להן את כל המאפיינים שלו.
כשיוצרים תצוגה מהותית מעל טבלת BigLake ב-Amazon S3, הנתונים בתצוגה המהותית לא זמינים לשאילתות איחוד עם נתונים ב-BigQuery. כדי להפוך נתונים מ-Amazon S3 בתצוגה מהותית לזמינים לצירופים, צריך ליצור עותק של התצוגה המהותית. אפשר ליצור עותקים של תצוגות מהותיות רק על בסיס תצוגות מהותיות מורשות.
מגבלות
התצוגות החומריות כפופות למגבלות הבאות:
- יכול להיות שיחולו הגבלות על הפניות לטבלת הבסיס והגבלות אחרות. מידע נוסף על מגבלות של תצוגות חומריות זמין במאמר מכסות ומגבלות.
- אי אפשר לעדכן או לשנות נתונים של תצוגה חומרית ישירות באמצעות פעולות כמו
COPY,EXPORT,LOAD,WRITEאו באמצעות הצהרות של שפת מניפולציה של נתונים (DML). - אי אפשר לעדכן את השאילתה של תצוגה חומרית אחרי שיוצרים אותה.
- תצוגה חומרית חייבת להיות באותו ארגון כמו טבלאות הבסיס שלה, או באותו פרויקט אם הפרויקט לא שייך לארגון.
- תצוגות חומריות משתמשות בתחביר SQL מוגבל ובקבוצה מוגבלת של פונקציות צבירה. מידע נוסף זמין במאמר בנושא תמיכה בשאילתות של תצוגות חומריות.
- אי אפשר להטמיע תצוגות מהותיות בתוך תצוגות מהותיות אחרות.
- תצוגות מהותיות לא יכולות לשלוח שאילתות לטבלאות חיצוניות או לטבלאות עם תווים כלליים, לתצוגות לוגיות1 או לתמונות מצב.
- תצוגות חומריות לא תומכות במשתני מערכת – לדוגמה, משתנה המערכת
@@session_id. - הערך של האפשרות
max_stalenessחייב להיות בין 30 דקות ל-3 ימים, כולל. - תצוגות חומריות תומכות רק בניב GoogleSQL.
- אפשר להגדיר תיאורים לתצוגות חומריות, אבל לא לעמודות ספציפיות בתצוגה החומרית.
- אם מוחקים טבלת בסיס בלי למחוק קודם את התצוגה החומרית, שאילתות ורענונים של התצוגה החומרית ייכשלו. אם יוצרים מחדש את טבלת הבסיס, צריך ליצור מחדש גם את התצוגה החומרית.
- רק לתצוגות חומריות לא מצטברות יכולות להיות טבלאות בסיס של מערכי נתונים חיצוניים ב-Spanner.
אם הרענון האחרון של תצוגה חומרית לא מצטברת התרחש מחוץ למרווח
max_staleness, השאילתה קוראת את הטבלאות של מערך הנתונים החיצוני הבסיסי של Spanner. מידע נוסף על טבלאות של מערכי נתונים חיצוניים ב-Spanner זמין במאמר יצירת תצוגות חומריות על מערכי נתונים חיצוניים ב-Spanner. - מערכת BigQuery לא שומרת במטמון תוצאות של שאילתות אם השאילתה מופעלת על תצוגות חומריות לא מצטברות שמפנות לטבלאות של מערכי נתונים חיצוניים ב-Spanner.
- תצוגות חומריות לא יכולות לרשת או להגדיר באופן מפורש סוגי נתונים עם פרמטרים, כמו
STRING(n), כי סוגי נתונים עם פרמטרים נתמכים רק בעמודות של טבלאות בסיס ובמשתני סקריפט.
1תמיכה בהפניה לתצוגה לוגית נמצאת בגרסת Preview. מידע נוסף מופיע במאמר הפניה לתצוגות לוגיות.
מגבלות של תצוגות חומריות על טבלאות עם CDC פעיל
לתצוגות מהותיות עם טבלאות בסיס פעילות של סימון נתונים שהשתנו (CDC) יש את המגבלות הבאות:
- אם לתצוגה חומרית יש טבלת בסיס עם סימון נתונים שהשתנו (CDC) פעילה, אי אפשר להפנות לטבלה הזו בשאילתה שמפנה גם לתצוגה החומרית.
- כשיוצרים תצוגה חומרית מעל טבלה עם לכידת נתוני שינוי פעילה, התצוגה החומרית לא יכולה לבצע את עבודות המיזוג בזמן הריצה של טבלת ה-CDC הבסיסית.
מגדירים את הערך של
max_stalenessשל התצוגה החומרית לפחות כפול מהערך שלmax_stalenessשל טבלת הבסיס. שאילתות שמופעלות על תצוגה חומרית נכשלות אם הגרסה הנוכחית של טבלת ה-CDC הבסיסית ישנה יותר מהתצוגה החומריתmax_staleness. - אי אפשר להשתמש בכוונון חכם לתצוגות חומריות בטבלאות עם נתונים פעילים של מעקב אחר שינויים.
מגבלות של תצוגות חומריות בטבלאות BigLake
ההגבלות הבאות חלות על תצוגות חומריות של טבלאות BigLake:
- אי אפשר לבצע חלוקה של התצוגה החומרית. טבלאות הבסיס יכולות להשתמש בחלוקה למחיצות של Hive, אבל אי אפשר לחלק למחיצות את האחסון של תצוגות חומריות בטבלאות BigLake. כלומר, כל מחיקה בטבלת הבסיס גורמת לרענון מלא של התצוגה החומרית. פרטים נוספים זמינים במאמר בנושא עדכונים מצטברים.
- הערך של
--max_stalenessהאפשרות בתצוגה החומרית צריך להיות גדול יותר מהערך של טבלת הבסיס של BigLake. - אי אפשר לבצע הצטרפות בין טבלאות מנוהלות של BigQuery לבין טבלאות BigLake בהגדרה אחת של תצוגה חומרית.
- BigQuery BI Engine לא תומך בהאצה של תצוגות חומריות בטבלאות BigLake.
תמחור של תצוגות מהותיות
תצוגות מהותיות כרוכות בעלויות בדרכים הבאות:
- שליחת שאילתות לתצוגות מהותיות.
- תחזוקה של תצוגות מהותיות, למשל כשמבצעים רענון של תצוגות מהותיות. העלות של רענון אוטומטי מחויבת בפרויקט שבו נמצא התצוגה. העלות של רענון ידני מחויבת לפרויקט שבו מופעלת משימת הרענון הידני. מידע נוסף על שליטה בעלויות התחזוקה זמין במאמר בנושא תחזוקה של עבודות רענון.
- אחסון של טבלאות תצוגה מהותיות.
בטבלה הבאה מפורטים רכיבי התמחור של תצוגות חומריות:
| רכיב | תמחור על פי דרישה | תמחור לפי קיבולת |
|---|---|---|
| שליחת שאילתות | מספר הבייטים שעובדו על ידי תצוגות מהותיות וכל החלקים הדרושים של טבלאות הבסיס.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.
המאמרים הבאים
- סקירה כללית על תצוגות לוגיות ותצוגות מהותיות
- יצירת תצוגות מהותיות
- שימוש בתצוגות מהותיות
- ניהול תצוגות מהותיות