מבוא ל-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 כדי לנתח את הנתונים: BI Engine מאיץ את השאילתות ב-BigQuery, בין אם הן מופעלות במסוף BigQuery, בכלי BI כמו Looker 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.

מצמצמים את מספר שאילתות ה-join

‫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
    • טבלאות מחולקות למחיצות: מחיצות שאליהן מתבצעת הפניה בגודל של 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_VALUE
  • AVG
  • BIT_AND
  • BIT_OR
  • BIT_XOR
  • CORR
  • COUNT
  • COUNTIF
  • COVAR_POP
  • COVAR_SAMP
  • CUME_DIST
  • DENSE_RANK
  • FIRST_VALUE
  • LAG
  • LAST_VALUE
  • LEAD
  • LOGICAL_AND
  • LOGICAL_OR
  • MAX
  • MIN
  • NTH_VALUE
  • NTILE
  • PERCENT_RANK
  • PERCENTILE_CONT
  • PERCENTILE_DISC
  • RANK
  • ROW_NUMBER
  • ST_CLUSTERDBSCAN
  • STDDEV_POP
  • STDDEV_SAMP
  • STDDEV
  • STRING_AGG
  • SUM
  • VAR_POP
  • VAR_SAMP
  • VARIANCE

אם אין תמיכה בפונקציות חלון, יכול להיות שתופיע השגיאה הבאה:

פונקציית הניתוח לא תואמת לאופרטורים אחרים או שהקלט שלה גדול מדי

מגבלות אחרות של 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, אבל יש פתרון עקיף:

  1. כותבים שאילתה ב-BigQuery.
  2. שמירת התוצאות של השאילתה בטבלה.
  3. מגדירים לוח זמנים לשאילתה כדי לעדכן את הטבלה באופן קבוע. מומלץ להגדיר קצב רענון שעתי או יומי. רענון כל דקה עלול לבטל את תוקף המטמון בתדירות גבוהה מדי.
  4. אפשר להשתמש בטבלה הזו בשאילתות שבהן הביצועים קריטיים.

מכסות ומגבלות

במאמר מכסות ומגבלות ב-BigQuery מפורטות המכסות והמגבלות שחלות על BI Engine.

תמחור

אתם צוברים עלויות על ההזמנה שאתם יוצרים לקיבולת של BI Engine. מידע על התמחור של BI Engine זמין בדף תמחור ב-BigQuery.

המאמרים הבאים