מבוא לתצוגות מהותיות
תצוגות מהותיות הן תצוגות שמחושבות מראש ומאחסנות מעת לעת את התוצאות של שאילתת SQL. במקרים מסוימים, תצוגות חומריות מקטינות את זמן העיבוד הכולל ואת העלויות הנלוות, כי הן מקטינות את כמות הנתונים שצריך לסרוק עבור כל שאילתה. אפשר להריץ שאילתות על תצוגות חומריות כמו על משאבי נתונים אחרים.
תרחישי השימוש הבאים מדגישים את היתרונות של תצוגות חומריות:
- עיבוד מוקדם של הנתונים. כדי לשפר את ביצועי השאילתות, כדאי להכין מראש צבירות, מסננים, צירופים וקלאסטרים.
- האצה במרכז הבקרה. העצמת כלי BI כמו Looker ששולחים שאילתות לעיתים קרובות לגבי אותם מדדים מצטברים – לדוגמה, משתמשים פעילים ביום.
- ניתוח נתונים בזמן אמת בשידורים גדולים. יכול לספק תשובות מהירות יותר בטבלאות שמקבלות נתוני סטרימינג במהירות גבוהה.
- ניהול עלויות. להפחית את העלות של שאילתות חוזרות ויקרות במערכי נתונים גדולים.
המאפיינים העיקריים של תצוגות חומריות כוללים את הדברים הבאים:
- ללא כל תחזוקה. תצוגות חומריות מחושבות מראש ברקע כשטבלאות הבסיס משתנות. כל שינוי מצטבר בנתונים מהטבלאות הבסיסיות מתווסף באופן אוטומטי לתצוגות החומריות, בלי שנדרשת פעולה מצד המשתמש.
- נתונים עדכניים. תצוגות מהותיות מחזירות נתונים עדכניים. אם שינויים בטבלאות הבסיס עלולים לפגוע בתוקף של התצוגה החומרית, הנתונים ייקראו ישירות מטבלאות הבסיס. אם השינויים בטבלאות הבסיס לא מבטלים את התצוגה החומרית, שאר הנתונים נקראים מהתצוגה החומרית ורק השינויים נקראים מטבלאות הבסיס.
- התאמה חכמה. אם אפשר לפתור חלק כלשהו בשאילתה שמופנית לטבלת בסיס באמצעות שאילתה של התצוגה החומרית, BigQuery מפנה מחדש את השאילתה לשימוש בתצוגה החומרית כדי לשפר את הביצועים והיעילות. מידע על האופן שבו כוונון חכם יכול לשפר שאילתות ועל המקרים שבהם הוא יכול לעשות זאת זמין במאמר בנושא שימוש בתצוגות חומריות.
תצוגות מהותיות מצטברות ולא מצטברות
יש שני סוגים בסיסיים של תצוגות חומריות:
- תצוגות חומריות מצטברות תומכות בקבוצה מוגבלת של תכונות. מידע נוסף על תחביר SQL נתמך לתצוגות מהותיות זמין במאמר יצירת תצוגות מהותיות. רק תצוגות חומריות מצטברות יכולות להפיק תועלת מהתאמה חכמה.
- פונקציות לא מצטברות תומכות ברוב התחביר שלא נתמך בתצוגות חומריות מצטברות.
כשיוצרים תצוגות מהותיות, כברירת מחדל BigQuery מאפשר ליצור תצוגות רק על סמך שאילתות מצטברות. כדי ליצור תצוגה לא מצטברת, אפשר לציין allow_non_incremental_definition = true בהגדרה של התצוגה המהותית.
הסוג הכי טוב של תצוגה חומרית שמתאים לשימוש תלוי במצב שלכם. בטבלה הבאה מוצגת השוואה בין התכונות של תצוגות חומריות מצטברות ולא מצטברות:
| קטגוריה | מצטבר | Non-incremental |
|---|---|---|
| השאילתה נתמכת | מוגבל | רוב השאילתות |
| עלות התחזוקה | יכולה להפחית את העלות של שאילתות שנמצאות בשימוש תדיר. במאמר עדכונים מצטברים מוסבר איך מתבצעים עדכונים של תצוגות חומריות. | כל רענון מריץ את השאילתה המלאה. |
| תמיכה בכוונון חכם | התמיכה קיימת ברוב השאילתות של תצוגות מקדימות. | לא |
| תוצאות עדכניות תמיד | יש תמיכה. תצוגות מצטברות מחזירות תוצאות עדכניות של שאילתות גם אם טבלאות הבסיס השתנו מאז הרענון האחרון. | לא |
תצוגות מהותיות מורשות
אפשר ליצור תצוגה חומרית מורשית כדי לשתף קבוצת משנה של נתונים ממערך נתונים של מקור לתצוגה במערך נתונים משני. אחרי זה תוכלו לשתף את התצוגה הזו עם משתמשים וקבוצות ספציפיים (גורמים ראשיים) שיכולים לראות את הנתונים שאתם משתפים. החשבונות הראשיים יכולים לשלוח שאילתות לנתונים שאתם מספקים בתצוגה, אבל הם לא יכולים לגשת ישירות למערך הנתונים של המקור.
תצוגות מורשות ותצוגות מהותיות מורשות מורשות באותו אופן. פרטים נוספים מופיעים במאמר בנושא תצוגות מורשות.
אינטראקציה עם תכונות אחרות של BigQuery
התכונות הבאות של BigQuery פועלות באופן שקוף עם תצוגות חומריות:
הסבר על תוכנית השאילתה: תוכנית השאילתה משקפת אילו תצוגות מהותיות נסרקות (אם יש כאלה), ומראה כמה בייטים נקראים מהתצוגות המהותיות ומהטבלאות הבסיסיות יחד.
שמירת תוצאות שאילתה במטמון: אפשר לשמור במטמון את התוצאות של שאילתה ש-BigQuery כותב מחדש באמצעות תצוגה חומרית, בכפוף למגבלות הרגילות (שימוש בפונקציות דטרמיניסטיות, ללא סטרימינג לטבלאות הבסיס וכו').
הגבלת עלויות: אם הגדרתם ערך למקסימום בייטים לחיוב, ושאילתה מסוימת קוראת מספר בייטים שחורג מהמגבלה, השאילתה תיכשל ולא תחויבו עליה, בין אם השאילתה משתמשת בתצוגות חומריות, בטבלאות הבסיס או בשניהם.
הערכת עלויות באמצעות הרצת בדיקה: הרצת בדיקה חוזרת על הלוגיקה של כתיבת שאילתות מחדש באמצעות התצוגות החומריות הזמינות, ומספקת הערכת עלויות. אתם יכולים להשתמש בתכונה הזו כדי לבדוק אם שאילתה ספציפית משתמשת בתצוגות חומריות.
טבלאות עם הפעלה של מטמון מטא-נתונים ב-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 של התצוגה החומרית אחרי שיוצרים את התצוגה החומרית.
- תצוגה חומרית חייבת להיות באותו ארגון כמו טבלאות הבסיס שלה, או באותו פרויקט אם הפרויקט לא שייך לארגון.
- תצוגות חומריות משתמשות בתחביר SQL מוגבל ובקבוצה מוגבלת של פונקציות צבירה. מידע נוסף זמין במאמר בנושא תצוגות חומריות נתמכות.
- אי אפשר להטמיע תצוגות מהותיות בתצוגות מהותיות אחרות.
- תצוגות מפורטות לא יכולות לשלוח שאילתות לטבלאות חיצוניות או לטבלאות עם תווים כלליים לחיפוש, לתצוגות לוגיות1 או לתמונות מצב.
- יש תמיכה בתצוגות חומריות רק בניב GoogleSQL.
- אפשר להגדיר תיאורים לתצוגות חומריות, אבל אי אפשר להגדיר תיאורים לעמודות הבודדות בתצוגה החומרית.
- אם מוחקים טבלת בסיס בלי למחוק קודם את התצוגה החומרית, שאילתות ורענונים של התצוגה החומרית ייכשלו. אם יוצרים מחדש את טבלת הבסיס, צריך ליצור מחדש גם את התצוגה החומרית.
- אם תצוגה חומרית כוללת טבלת בסיס עם הפעלה של תכונת התיעוד של שינויי נתונים, אי אפשר להפנות לטבלה הזו באותה שאילתה שבה מופיעה התצוגה החומרית.
- רק לתצוגות חומריות לא מצטברות יכולות להיות טבלאות בסיס של מערכי נתונים חיצוניים ב-Spanner.
אם הרענון האחרון של תצוגה חומרית לא מצטברת התרחש מחוץ למרווח הזמן
max_staleness, השאילתה קוראת את הטבלאות של מערך הנתונים החיצוני הבסיסי של Spanner. מידע נוסף על טבלאות של מערכי נתונים חיצוניים ב-Spanner זמין במאמר יצירת תצוגות חומריות על מערכי נתונים חיצוניים ב-Spanner.
1התמיכה בהפניה לתצוגה לוגית היא בגרסת Preview. מידע נוסף מופיע במאמר בנושא הפניות לתצוגות לוגיות.
מגבלות של תצוגות חומריות בטבלאות BigLake
- אין תמיכה בחלוקה למחיצות של התצוגה החומרית. בטבלאות הבסיס אפשר להשתמש בחלוקה למחיצות של Hive, אבל אי אפשר לחלק למחיצות את האחסון של התצוגה המפורטת בטבלאות BigLake. כלומר, כל מחיקה בטבלת הבסיס גורמת לרענון מלא של התצוגה החומרית. פרטים נוספים זמינים במאמר בנושא עדכונים מצטברים.
- הערך של האפשרות
--max_stalenessבתצוגה החומרית צריך להיות גדול יותר מהערך של טבלת הבסיס של BigLake. - אין תמיכה בצירופים בין טבלאות מנוהלות ב-BigQuery לבין טבלאות BigLake בהגדרה אחת של תצוגה חומרית.
- BigQuery BI Engine לא תומך בהאצה של תצוגות חומריות בטבלאות BigLake.
תמחור של תצוגות מהותיות
העלויות משויכות להיבטים הבאים של תצוגות חומריות:
- שליחת שאילתות לתצוגות מהותיות.
- תחזוקה של תצוגות מהותיות, למשל כשמבצעים רענון של תצוגות מהותיות. העלות של רענון אוטומטי מחויבת בפרויקט שבו נמצא התצוגה. העלות של רענון ידני מחויבת לפרויקט שבו מופעלת משימת הרענון הידני. מידע נוסף על שליטה בעלויות התחזוקה זמין במאמר תחזוקה של עבודות רענון.
- אחסון של טבלאות תצוגה מהותיות.
| רכיב | תמחור על פי דרישה | תמחור לפי קיבולת |
|---|---|---|
| שליחת שאילתות | מספר הבייטים שעברו עיבוד בתצוגות מהותיות ובחלקים הדרושים של טבלאות הבסיס.1 | יחידות קיבולת (Slots) נצרכות בזמן השאילתה. |
| תחזוקה | בייטים שעובדו במהלך זמן הרענון. | יחידות הקיבולת (Slots) נצרכות במהלך זמן הרענון. |
| אחסון | בייט שמאוחסן בתצוגות מהותיות. | בייט שמאוחסן בתצוגות מהותיות. |
1במקרים שבהם הדבר אפשרי, 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.
המאמרים הבאים
- סקירה כללית על תצוגות לוגיות ותצוגות מהותיות
- יצירת תצוגות מהותיות
- שימוש בתצוגות מהותיות
- ניהול תצוגות מהותיות