מבוא ל-BI Engine
BigQuery BI Engine הוא שירות ניתוח מהיר בזיכרון שמשפר את הביצועים של הרבה שאילתות SQL ב-BigQuery על ידי שמירת הנתונים שבהם אתם משתמשים הכי הרבה במטמון בצורה חכמה. BI Engine יכול להאיץ שאילתות SQL מכל מקור, כולל שאילתות שנכתבו על ידי כלי להמחשת נתונים, ויכול לנהל טבלאות במטמון לצורך אופטימיזציה שוטפת. כך אפשר לשפר את הביצועים של השאילתות בלי לבצע כוונון ידני או חלוקה לשכבות של נתונים. כדי לשפר את הביצועים של BI Engine בטבלאות גדולות, אפשר לקבץ ולפצל טבלאות.
לדוגמה, אם בלוח הבקרה מוצגים רק נתונים מהרבעון האחרון, אפשר לחלק את הטבלאות לפי זמן כך שרק המחיצות האחרונות ייטענו לזיכרון. אפשר גם לשלב את היתרונות של תצוגות חומריות ושל BI Engine. השיטה הזו יעילה במיוחד כשמשתמשים בתצוגות חומריות כדי לבצע הצטרפות ושיטוח של נתונים, במטרה לבצע אופטימיזציה של המבנה שלהם ל-BI Engine.
היתרונות של BI Engine:
- תאימות ל-BigQuery API: BI Engine משתלב ישירות עם BigQuery API. כל פתרון BI או אפליקציה בהתאמה אישית שפועלים עם BigQuery API באמצעות מנגנונים סטנדרטיים כמו REST או מנהלי התקנים של JDBC ו-ODBC יכולים להשתמש ב-BI Engine ללא שינוי.
- זמן ריצה וקטורי: שימוש בעיבוד וקטורי במנוע ביצוע מאפשר שימוש יעיל יותר בארכיטקטורת CPU מודרנית, על ידי פעולה על אצוות של נתונים בכל פעם. בנוסף, BI Engine משתמש בקידודים מתקדמים של נתונים, במיוחד בקידוד אורך רצף מילוני, כדי לדחוס עוד יותר את הנתונים שמאוחסנים בשכבת הזיכרון.
- שילוב חלק: BI Engine פועל עם תכונות ומטא-נתונים של BigQuery, כולל תצוגות מורשות, אבטחה ברמת העמודה והסתרת נתונים.
- הקצאות של מקומות שמורים: המקומות השמורים ב-BI Engine מנהלים בנפרד את הקצאת הזיכרון לכל פרויקט ואזור. BI Engine שומר במטמון רק את החלקים הנדרשים של העמודות והמחיצות שנכללות בשאילתה. אתם יכולים לציין אילו טבלאות יואצו באמצעות BI Engine באמצעות טבלאות מועדפות.
ברוב הארגונים, אדמין לחיוב מפעיל את BI Engine. האדמין צריך להזמין קיבולת להאצת BI Engine באמצעות מהדורה מתאימה. איך שומרים קיבולת ב-BI Engine
תרחישי שימוש ב-BI Engine
BI Engine יכול להאיץ באופן משמעותי הרבה שאילתות SQL, כולל אלה שמשמשות ללוחות בקרה של BI. ההאצה הכי יעילה אם מזהים את הטבלאות שחיוניות לשאילתות, ואז מסמנים אותן כטבלאות מועדפות. כדי להשתמש ב-BI Engine, צריך ליצור שמירת מקום באזור מסוים ולציין את הגודל שלה. אתם יכולים לאפשר ל-BigQuery לקבוע אילו טבלאות יישמרו במטמון על סמך דפוסי השימוש בפרויקט, או לציין טבלאות כדי למנוע מהתנועה האחרת להפריע להאצה שלהן.
BI Engine שימושי בתרחישי השימוש הבאים:
- אתם משתמשים בכלים לבינה עסקית כדי לנתח את הנתונים: BI Engine מאיץ שאילתות של BigQuery, בין אם הן מופעלות במסוף BigQuery, בכלי לבינה עסקית כמו Data Studio או Tableau, או בספריית לקוח, ב-API או במחבר ODBC או JDBC. השימוש באפשרות הזו יכול לשפר משמעותית את הביצועים של לוחות בקרה שמחוברים ל-BigQuery דרך חיבור מובנה (API) או מחברים.
- הטבלאות שאתם שולחים להן שאילתות בתדירות גבוהה: BI Engine מאפשר לכם להגדיר טבלאות מועדפות להאצה. האפשרות הזו שימושית אם יש לכם קבוצת משנה של טבלאות שמתבצעות לגביהן שאילתות בתדירות גבוהה יותר, או שהן משמשות למרכזי בקרה עם נראות גבוהה.
יכול להיות ש-BI Engine לא יתאים לצרכים שלכם במקרים הבאים:
- אתם משתמשים בתווים כלליים לחיפוש בשאילתות: שאילתות שמפנות לטבלאות עם תווים כלליים לחיפוש לא נתמכות על ידי BI Engine ולא נהנות מהאצה.
- אתם צריכים תכונות של BigQuery שלא נתמכות ב-BI Engine: למרות ש-BI Engine תומך ברוב הפונקציות והאופרטורים של SQL, תכונות שלא נתמכות ב-BI Engine כוללות טבלאות חיצוניות, אבטחה ברמת השורה ופונקציות מוגדרות על ידי המשתמש שאינן SQL.
שיקולים לשימוש ב-BI Engine
כשמחליטים איך להגדיר את BI Engine, כדאי להביא בחשבון את הנקודות הבאות:
איך מוודאים שההאצה תפעל בשאילתות ספציפיות
כדי להבטיח שקבוצה של שאילתות תואץ, צריך ליצור פרויקט נפרד עם הקצאה ייעודית של BI Engine. קודם כל, מעריכים את קיבולת המחשוב שנדרשת לשאילתות, ואז מגדירים את הטבלאות האלה כטבלאות מועדפות ל-BI Engine.
צמצום שאילתות האיחוד
BI Engine מתאים במיוחד לנתונים שכבר בוצעו בהם פעולות של צירוף או צבירה, ולשאילתות עם מספר קטן של צירופים. זה נכון במיוחד כשצד אחד של הצירוף גדול והצדדים האחרים קטנים בהרבה, למשל כשמריצים שאילתה על טבלת עובדות גדולה שמצורפת לטבלאות מאפיינים קטנות יותר. אפשר לשלב את BI Engine עם תצוגות חומריות, שמבצעות הצטרפויות כדי ליצור טבלה גדולה ושטוחה אחת. כך, אותם צירופים לא מתבצעים לכל שאילתה. מומלץ להשתמש בתצוגות חומריות לא עדכניות כדי לשפר את ביצועי השאילתות.
הסבר על ההשפעה של BI Engine
כדי להבין את השימוש ב-BI Engine, אפשר לעיין במאמר בנושא מעקב אחרי BI Engine באמצעות Cloud Monitoring, או לשלוח שאילתות לתצוגות INFORMATION_SCHEMA.BI_CAPACITIES ו-INFORMATION_SCHEMA.BI_CAPACITY_CHANGES. כדי לקבל את ההשוואה המדויקת ביותר, חשוב להשבית את האפשרות שימוש בתוצאות שנשמרו במטמון ב-BigQuery. מידע נוסף זמין במאמר בנושא שימוש בתוצאות של שאילתות שנשמרו במטמון.
טבלאות מועדפות
טבלאות מועדפות של BI Engine מאפשרות לכם להגביל את ההאצה של BI Engine לקבוצה מסוימת של טבלאות. שאילתות לכל הטבלאות האחרות משתמשות במשבצות רגילות של BigQuery. לדוגמה, באמצעות טבלאות מועדפות אפשר להאיץ רק את הטבלאות ולוחות הבקרה שזיהיתם כחשובים לעסק שלכם.
אם אין מספיק זיכרון RAM בפרויקט כדי להכיל את כל הטבלאות המועדפות, BI Engine מעביר מחיצות ועמודות שלא הייתה אליהן גישה לאחרונה. התהליך הזה מפנה זיכרון לשאילתות חדשות שצריך להאיץ.
מגבלות על טבלאות מועדפות
לטבלאות המועדפות של BI Engine יש את המגבלות הבאות:
- אי אפשר להוסיף תצוגות לרשימת ההזמנות המועדפות של שולחנות. טבלאות מועדפות של BI Engine תומכות רק בטבלאות.
- השאילתות לתצוגות חומריות מואצות רק אם התצוגות החומריות והטבלאות הבסיסיות שלהן נמצאות ברשימת הטבלאות המועדפות.
- אין תמיכה בציון מחיצות או עמודות להאצה.
- עמודות מסוג
JSONלא נתמכות, ו-BI Engine לא מאיץ את השאילתות שכוללות אותן. - שאילתות שמתבצעת בהן גישה לכמה טבלאות מואצות רק אם כל הטבלאות הן טבלאות מועדפות. לדוגמה, כדי להאיץ את כל הטבלאות בשאילתה עם
JOIN, צריך להוסיף אותן לרשימת הטבלאות המועדפות. אם אפילו טבלה אחת לא נמצאת ברשימה המועדפת, אי אפשר להשתמש ב-BI Engine בשאילתה. - אין תמיכה במערכי נתונים ציבוריים במסוף Google Cloud . כדי להוסיף טבלה ציבורית כטבלה מועדפת, צריך להשתמש ב-API או ב-DDL.
מגבלות
כדי להשתמש ב-BI Engine, הארגון שלכם צריך לרכוש קיבולת של BI Engine על ידי יצירת הזמנה של BI Engine במהדורה נתמכת. מידע נוסף זמין במאמר הסבר על מהדורות BigQuery.
בנוסף, יש ל-BigQuery BI Engine את המגבלות הבאות.
הצטרפויות
BI Engine מאיץ סוגים מסוימים של שאילתות join. ההאצה מתרחשת בשאילתות משנה ברמת העלה עם INNER ו-LEFT OUTER JOINS, שבהן טבלת עובדות גדולה מצורפת לעד ארבע טבלאות קטנות יותר של 'מאפיינים'.
ההגבלות הבאות חלות על טבלאות קטנות של מאפיינים:
- פחות מ-5 מיליון שורות
- מגבלת הגודל:
- טבלאות לא מחולקות: עד 5 GiB
- טבלאות מחולקות למחיצות (Partitions): מחיצות שאליהן מתבצעת הפניה בגודל של 1GB או פחות
פונקציות חלון
פונקציות אנליטיות (window functions), שנקראות גם פונקציות חלון, מוגבלות באופן הבא כשמאיצים אותן באמצעות BigQuery BI Engine:
- שלבי הקלט מואצים על ידי BigQuery BI Engine אם אין בהם פונקציות חלון. במקרה הזה,
INFORMATION_SCHEMA.JOBSצפייה בדוחותbi_engine_statistics.acceleration_modeכFULL_INPUT. - שלבי הקלט של שאילתות עם פונקציות חלון בשלבי הקלט שלהן מואצים על ידי BI Engine, אבל לא חלים עליהם המגבלות שמתוארות במאמר מגבלות של פונקציות חלון ב-BI Engine.
במקרה כזה, שלבי הקלט או השאילתה המלאה מופעלים ב-BI Engine. במקרה הזה,
INFORMATION_SCHEMA.JOBSצפייה בדוחותbi_engine_statistics.acceleration_modeבתורFULL_INPUTאוFULL_QUERY.
מידע נוסף על השדה BiEngineStatistics זמין במאמר בנושא הפניה למשרה.
מגבלות על פונקציות אנליטיות (window functions) ב-BI Engine
שאילתות עם פונקציות חלון מופעלות ב-BI Engine רק אם מתקיימים כל התנאים הבאים:
- השאילתה סורקת טבלה אחת בדיוק.
- הטבלה לא מחולקת למחיצות.
- בטבלה יש פחות מ-5 מיליון שורות.
- לשאילתה אין אופרטורים של
JOIN. - הגודל של הטבלה שנסרקה כפול מספר האופרטורים של פונקציות אנליטיות (window function) לא עולה על 300 MiB.
שתי פונקציות אנליטיות (window function) עם סעיפי OVER זהים ואותם קלטים ישירים יכולות לחלוק את אותו אופרטור של פונקציה אנליטית (window function). לדוגמה:
- למאפיין
SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_tableיש רק אופרטור אחד של פונקציה אנליטית (window function). - ל-
SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_tableיש שני אופרטורים של פונקציות אנליטיות (window function) כי לשתי הפונקציות יש סעיפיOVERשונים. - לפונקציה
SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table)יש שני אופרטורים של פונקציות אנליטיות (window function) כי לשתי הפונקציות יש קלטים ישירים שונים, למרות שהסעיפיםOVERשלהן נראים זהים.
פונקציות חלון נתמכות
יש תמיכה בפונקציות הבאות של חלונות שמופיעות בהפניה:
ANY_VALUEAVGBIT_ANDBIT_ORBIT_XORCORRCOUNTCOUNTIFCOVAR_POPCOVAR_SAMPCUME_DISTDENSE_RANKFIRST_VALUELAGLAST_VALUELEADLOGICAL_ANDLOGICAL_ORMAXMINNTH_VALUENTILEPERCENT_RANKPERCENTILE_CONTPERCENTILE_DISCRANKROW_NUMBERST_CLUSTERDBSCANSTDDEV_POPSTDDEV_SAMPSTDDEVSTRING_AGGSUMVAR_POPVAR_SAMPVARIANCE
אם אין תמיכה בפונקציות חלון, יכול להיות שתופיע השגיאה הבאה:
פונקציית הניתוח לא תואמת לאופרטורים אחרים או שהקלט שלה גדול מדי
מגבלות אחרות של BI Engine
האצת BI Engine לא זמינה לתכונות הבאות:
- פונקציות UDF ב-JavaScript
- טבלאות חיצוניות, כולל טבלאות BigLake
- שאילתות על נתוני JSON – הודעת שגיאה: JSON native type is not supported
- כתיבת התוצאות לטבלה ב-BigQuery קבועה
- טבלאות שמכילות פעולות upsert שמשתמשות בהטמעה של BigQuery לסימון נתונים שהשתנו (CDC)
- עסקאות
- שאילתות שמחזירות יותר מ-1 GiB של נתונים. ליישומים שרגישים לזמן האחזור, מומלץ להשתמש בגודל תגובה של פחות מ-1 MiB.
- אבטחה ברמת השורה
- שאילתות שמשתמשות בפונקציה
SEARCHאו שעברו אופטימיזציה באמצעות אינדקסים של חיפושים
פתרון עקיף לתכונות שלא נתמכות
חלק מהתכונות של SQL לא נתמכות ב-BigQuery BI Engine, אבל יש פתרון עקיף:
- כותבים שאילתה ב-BigQuery.
- שמירת התוצאות של השאילתה בטבלה.
- קובעים לוח זמנים להרצת השאילתה כדי לעדכן את הטבלה באופן קבוע. מומלץ להגדיר קצב רענון של שעה או יום. רענון כל דקה עלול לגרום לפסילת המטמון בתדירות גבוהה מדי.
- אפשר להשתמש בטבלה הזו בשאילתות שבהן הביצועים קריטיים.
מכסות ומגבלות
במאמר מכסות ומגבלות ב-BigQuery מפורטות המכסות והמגבלות שחלות על BI Engine.
תמחור
אתם צוברים עלויות על ההזמנה שאתם יוצרים לקיבולת של BI Engine. מידע על התמחור של BI Engine זמין בדף תמחור ב-BigQuery.
המאמרים הבאים
- במאמר שמירת קיבולת ב-BI Engine מוסבר איך ליצור הזמנה ב-BI Engine.
- מידע על הגדרת טבלאות מועדפות זמין במאמר טבלאות מועדפות ב-BI Engine.
- כדי להבין את מידת השימוש ב-BI Engine, אפשר לעיין במאמר מעקב אחרי BI Engine באמצעות Cloud Monitoring.
- מידע על פונקציות שעברו אופטימיזציה ל-BI Engine
- כדי ללמוד איך משתמשים ב-BI Engine, אפשר לעיין במאמרים הבאים: