שמירת שאילתות במטמון

‫Looker מפחית את העומס על מסד הנתונים ומשפר את הביצועים באמצעות תוצאות שמורות במטמון של שאילתות SQL קודמות, כשהן זמינות וכשהפונקציה הזו מותרת על ידי מדיניות השמירה במטמון. בדף הזה מוסבר על מדיניות ברירת המחדל של Looker בנושא שמירת נתונים במטמון, ועל האפשרויות הזמינות לשינוי משך הזמן של תוצאות שנשמרו במטמון במופע Looker.

איך Looker משתמש בשאילתות שנשמרו במטמון

בשאילתות SQL, מנגנון השמירה במטמון ב-Looker פועל באופן הבא:

  1. כשמריצים שאילתת SQL מניתוח, מ-Look או מלוח בקרה, מערכת Looker בודקת את המטמון כדי לראות אם כבר יש תוצאות במטמון עבור השאילתה הזו. התוצאות ששמורות במטמון ישמשו רק אם כל ההיבטים של השאילתה זהים, כולל שדות, מסננים, פרמטרים ומגבלות שורות.

  2. אם נמצאות תוצאות שמורות במטמון, Looker בודק את מדיניות השמירה במטמון שמוגדרת במודל LookML כדי לקבוע אם תוקף התוצאות שמורות במטמון פג. אם תוקף התוצאות שנשמרו במטמון לא פג, Looker משתמש בתוצאות האלה בשאילתה.

  3. אם לא נמצאו תוצאות במטמון לשאילתה, או אם תוקף התוצאות במטמון פג, Looker יריץ את השאילתה מול מסד הנתונים. תוצאות השאילתה החדשות יישמרו במטמון.

מדיניות ברירת המחדל לשמירת נתונים במטמון היא שעה אחת. בקטע הבא, שינוי מדיניות שמירת הנתונים במטמון, מוסבר איך לקצר או להאריך את משך הזמן הזה, וגם מתוארות אפשרויות לסנכרון מדיניות שמירת הנתונים במטמון עם תהליך ה-ETL (חילוץ, טרנספורמציה וטעינה) של מסד הנתונים.

שינוי של כללי מדיניות שמירת נתונים במטמון

אפשר לציין מדיניות שימור במטמון ברמת הכלי 'ניתוח נתונים' ב-LookML וברמת מודל LookML.

מנגנון המטמון המומלץ הוא שימוש בפרמטר datagroup ברמת המודל. קבוצות נתונים מאפשרות לכם לסנכרן את מדיניות השמירה במטמון של מודל עם לוח הזמנים של ETL במסד הנתונים שלכם, באמצעות הפרמטר sql_trigger והגדרת מרווח תפוגה של המטמון באמצעות הפרמטר max_cache_age. מידע נוסף מופיע בקטע שמירה במטמון של שאילתות ובנייה מחדש של טבלאות נגזרות קבועות (PDT) באמצעות קבוצות נתונים.

כדי לפשט את התהליך, אפשר להשתמש במקום זאת בפרמטר persist_for ברמת המודל או ברמת הניתוח. השימוש בפרמטר persist_for מאפשר להגדיר מרווח תפוגה של המטמון שמשנה את מרווח ברירת המחדל של שעה אחת. עם זאת, השימוש ב-persist_for פחות יעיל מהשימוש בקבוצות נתונים, מכמה סיבות שמוסברות בקטע שמירת שאילתות במטמון באמצעות persist_for.

אם מוגדרת קבוצת נתונים או persist_for ב-Explore או במודל, מדיניות הקאשינג משתנה באופן הבא:

  • לפני שחלף פרק הזמן persist_for או פרק הזמן max_cache_age של קבוצת הנתונים: אם השאילתה מופעלת מחדש, Looker שולף נתונים מהמטמון.
  • בזמן שהאינטרוול של persist_forהנתונים או האינטרוול של max_cache_ageקבוצת הנתונים מסתיים: Looker מוחק נתונים מהמטמון.
  • אחרי שחלף פרק הזמן persist_for או פרק הזמן max_cache_age של קבוצת הנתונים: אם מריצים מחדש את השאילתה, Looker שולף את הנתונים ישירות ממסד הנתונים ומאפס את פרק הזמן persist_for או max_cache_age.

נקודה חשובה כאן היא שהנתונים נמחקים מהמטמון כשתוקף המרווח persist_for או max_cache_age פג.

אם המטמון מגיע למגבלת האחסון, הנתונים מוצאים ממנו על סמך אלגוריתם Least Recently Used (LRU), ואין ערובה לכך שנתונים עם מרווחי persist_for או max_cache_age שתוקפם פג ימחקו בבת אחת.

צמצום הזמן שבו הנתונים נמצאים במטמון

‫Looker תמיד כותב את תוצאות השאילתה למטמון. גם אם המרווחים של persist_for ושל max_cache_age מוגדרים לאפס, יכול להיות שנתונים במטמון עדיין יישמרו למשך עד 10 דקות. כל נתוני הלקוחות שמאוחסנים במטמון הדיסק מוצפנים באמצעות תקן הצפנה מתקדם (AES).

כדי לצמצם את משך הזמן שבו הנתונים מאוחסנים במטמון:

  • לכל פרמטר persist_for (של מודל או של ניתוח) או פרמטר max_cache_age (של קבוצת נתונים), מגדירים את הערך 0 minutes. ‫Looker מוחק את המטמון כשמגיע מועד התפוגה של persist_for או כשמגיעים לנתונים במרווח max_cache_age שצוין ב-datagroup. (אין צורך להגדיר את הפרמטר persist_for של טבלאות נגזרות קבועות (PDT) לערך 0 minutes כדי לצמצם את כמות הנתונים שמאוחסנים במטמון. ה-PDT נכתבים ישירות למסד הנתונים ולא למטמון).
  • מגדירים את הפרמטר suggest_persist_for לערך קטן. הערך suggest_persist_for מציין כמה זמן Looker צריך לשמור במטמון הצעות למסננים. ההצעות לסינון מבוססות על שאילתה של הערכים בשדה שמסננים. תוצאות השאילתה האלה נשמרות במטמון כדי ש-Looker יוכל לספק הצעות במהירות בזמן שהמשתמש מקליד בשדה הטקסט של המסנן. ברירת המחדל היא לשמור במטמון את הצעות הסינון למשך 6 שעות. כדי לצמצם את משך הזמן שבו הנתונים נמצאים במטמון, אפשר להגדיר את הערך של suggest_persist_for למספר נמוך יותר, כמו 5 minutes.

בדיקה אם שאילתה הוחזרה מהמטמון

בחלון ניתוח נתונים, אפשר לראות אם השאילתה הוחזרה מהמטמון. לשם כך, אחרי שמריצים שאילתה, בודקים את המידע שמופיע לצד הלחצן הפעלה.

כששאילתה מוחזרת מהמטמון, מוצג הטקסט 'מהמטמון'. אחרת, מוצג משך הזמן שנדרש להחזרת השאילתה.

איך מאלצים יצירת תוצאות חדשות ממסד הנתונים

בחלון Explore, אפשר לאלץ אחזור של תוצאות חדשות ממסד הנתונים. אחרי שמריצים שאילתה (כולל שאילתות של תוצאות משולבות), בוחרים באפשרות ניקוי מטמון ורענון בתפריט הסמל של פעולות ב-Explore.

שמירת שאילתות במטמון ובנייה מחדש של טבלאות נגזרות מתמידות (PDT) באמצעות קבוצות נתונים

אפשר להשתמש בקבוצות נתונים כדי לתאם את לוח הזמנים של ETL (חילוץ, טרנספורמציה וטעינה) של מסד הנתונים עם מדיניות השמירה במטמון של Looker ועם לוח הזמנים של בנייה מחדש של טבלה נגזרת מתמשכת (PDT).

אתם יכולים להשתמש בקבוצת נתונים כדי לציין את הטריגר לבנייה מחדש של PDT על סמך הזמן שבו נתונים חדשים מתווספים למסד הנתונים. לאחר מכן תוכלו להחיל את אותה קבוצת נתונים על הניתוח או על המודל, כך שגם התוצאות שנשמרו במטמון יפוגו כשה-PDT יבנה מחדש.

אפשרות אחרת היא להשתמש בקבוצת נתונים כדי להפריד בין הטריגר של בנייה מחדש של PDT לבין גיל המטמון המקסימלי. זה יכול להיות שימושי אם יש לכם Explore שמבוסס על נתונים שמתעדכנים בתדירות גבוהה מאוד ומצורף ל-PDT שנבנה מחדש בתדירות נמוכה יותר. במקרה כזה, יכול להיות שתרצו לאפס את מטמון השאילתות בתדירות גבוהה יותר מאשר בניית ה-PDT מחדש.

הגדרה של קבוצת נתונים

מגדירים קבוצת נתונים באמצעות הפרמטר datagroup, בקובץ מודל או בקובץ LookML משלו. אפשר להגדיר כמה קבוצות נתונים אם רוצים להגדיר מדיניות שונה של שמירת נתונים במטמון ובנייה מחדש של טבלאות נגזרות קבועות (PDT) עבור ניתוחים שונים או טבלאות PDT שונות בפרויקט.

הפרמטר datagroup יכול לכלול את הפרמטרים המשניים הבאים:

  • label – מציינת תווית אופציונלית לקבוצת הנתונים.
  • description – מציין תיאור אופציונלי של קבוצת הנתונים, שאפשר להשתמש בו כדי להסביר את המטרה והמנגנון של קבוצת הנתונים.
  • max_cache_age – מציין מחרוזת שמגדירה תקופת זמן. אם משך הזמן שחלף מאז שהשאילתה נשמרה במטמון חורג מתקופת הזמן, Looker מבטל את התוקף של המטמון. בפעם הבאה שהשאילתה מופעלת, Looker שולח את השאילתה למסד הנתונים כדי לקבל תוצאות עדכניות.
  • sql_trigger – מציינת שאילתת SQL שמחזירה שורה אחת עם עמודה אחת. אם הערך שמוחזר על ידי השאילתה שונה מהתוצאות הקודמות של השאילתה, קבוצת הנתונים עוברת למצב מופעל.
  • interval_trigger – מציין לוח זמנים להפעלת קבוצת הנתונים, כמו "24 hours".

קבוצת נתונים חייבת לכלול לפחות את הפרמטר max_cache_age, את הפרמטר sql_trigger או את הפרמטר interval_trigger.

הנה דוגמה לקבוצת נתונים שבה sql_trigger מוגדר לבנייה מחדש של ה-PDT מדי יום. בנוסף, הערך של max_cache_age מוגדר לניקוי של מטמון השאילתות כל שעתיים, למקרה ששילוב של ניתוחים ב-Explore עם PDTs לנתונים אחרים מתרחש בתדירות גבוהה יותר מפעם ביום.

datagroup: customers_datagroup {
  sql_trigger: SELECT DATE(NOW());;
  max_cache_age: "2 hours"
}

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

שימוש בקבוצת נתונים כדי לציין טריגר לבנייה מחדש של PDT

כדי להגדיר טריגר לבנייה מחדש של PDT באמצעות קבוצות נתונים, יוצרים פרמטר datagroup עם תת-הפרמטר sql_trigger או interval_trigger. לאחר מכן מקצים את קבוצת הנתונים לכללי PDT נפרדים באמצעות תת-הפרמטר datagroup_trigger בהגדרה של derived_table של כלל ה-PDT. אם משתמשים ב-datagroup_trigger בשביל ה-PDT, לא צריך לציין אסטרטגיית שמירה אחרת לטבלת הנתונים הנגזרים. אם תציינו כמה אסטרטגיות של התמדה עבור PDT, תוצג אזהרה ב-Looker IDE, ורק האסטרטגיה datagroup_trigger תשמש אתכם.

הדוגמה הבאה היא של הגדרת PDT שמשתמשת בקבוצת הנתונים customers_datagroup. ההגדרה הזו גם מוסיפה כמה אינדקסים, גם ב-customer_id וגם ב-first_order_date. מידע נוסף על הגדרת PDTs זמין בדף התיעוד Derived tables in Looker (טבלאות נגזרות ב-Looker).

view: customer_order_facts {
  derived_table: {
    sql: ... ;;
    datagroup_trigger: customers_datagroup
    indexes: ["customer_id", "first_order_date"]
  }
}

מידע נוסף על האופן שבו קבוצות נתונים פועלות עם PDTs זמין בדף התיעוד בנושא טבלאות נגזרות ב-Looker.

שימוש בקבוצת נתונים כדי לציין איפוס של מטמון שאילתות ב-Explores

כשמופעלת קבוצת נתונים, הכלי ליצירה מחדש של Looker בונה מחדש את טבלאות ה-PDT שמשתמשות בקבוצת הנתונים הזו כשיטת התמדה. אחרי ש-PDT של קבוצת הנתונים נבנה מחדש, Looker מנקה את המטמון של ניתוחים שמשתמשים ב-PDT שנבנה מחדש של קבוצת הנתונים. אם רוצים להתאים אישית את לוח הזמנים לאיפוס של מטמון השאילתות של קבוצת הנתונים, אפשר להוסיף את הפרמטר max_cache_age להגדרה של קבוצת הנתונים. הפרמטר max_cache_age מאפשר לכם לנקות את מטמון השאילתות לפי לוח זמנים שאתם קובעים, בנוסף לאיפוס האוטומטי של מטמון השאילתות שמתבצע ב-Looker כשמבצעים בנייה מחדש של טבלאות PDT בקבוצת הנתונים.

כדי להגדיר מדיניות של שמירת שאילתות במטמון באמצעות קבוצות נתונים, יוצרים פרמטר datagroup עם פרמטר המשנה max_cache_age.

כדי לציין קבוצת נתונים לשימוש באיפוס של מטמון השאילתות ב'ניתוחים', משתמשים בפרמטר persist_with:

בדוגמה הבאה מוצגת קבוצת נתונים בשם orders_datagroup שמוגדרת בקובץ מודל. ל-datagroup יש פרמטר sql_trigger, שמציין שהשאילתה select max(id) from my_tablename תשמש לזיהוי מתי התרחש ETL. גם אם תהליך ה-ETL הזה לא יקרה במשך זמן מה, ב-max_cache_age של קבוצת הנתונים מצוין שהנתונים שבמטמון ישמשו רק למשך 24 שעות לכל היותר.

הפרמטר persist_with של המודל מצביע על מדיניות שמירת הנתונים במטמון orders_datagroup, כלומר זו תהיה מדיניות ברירת המחדל לשמירת נתונים במטמון לכל הניתוחים במודל. עם זאת, אנחנו לא רוצים להשתמש במדיניות ברירת המחדל של המודל בנושא שמירת נתונים במטמון עבור הניתוחים customer_facts ו-customer_background, ולכן אנחנו יכולים להוסיף את הפרמטר persist_with כדי לציין מדיניות שונה בנושא שמירת נתונים במטמון עבור שני הניתוחים האלה. לדוחות orders ו-orders_facts אין פרמטר persist_with, ולכן הם ישתמשו במדיניות ברירת המחדל של המודל בנושא שמירת נתונים במטמון: orders_datagroup.

datagroup: orders_datagroup {
  sql_trigger: SELECT max(id) FROM my_tablename ;;
  max_cache_age: "24 hours"
}

datagroup: customers_datagroup {
  sql_trigger: SELECT max(id) FROM my_other_tablename ;;
}

persist_with: orders_datagroup

explore: orders { ... }

explore: order_facts { ... }

explore: customer_facts {
  persist_with: customers_datagroup
  ...
}

explore: customer_background {
  persist_with: customers_datagroup
  ...
}

אם תציינו גם את persist_with וגם את persist_for, תקבלו אזהרת אימות והמערכת תשתמש ב-persist_with.

שימוש בקבוצת נתונים להפעלת משלוחים מתוזמנים

אפשר להשתמש בקבוצות נתונים גם כדי להפעיל שליחה של מרכז בקרה או של Look. אם בוחרים באפשרות הזו, Looker ישלח את הנתונים כשהקבוצה תסתיים, כדי שהתוכן המתוזמן יהיה עדכני.

שימוש בחלונית Admin לקבוצות נתונים

אם יש לכם תפקיד אדמין ב-Looker, אתם יכולים להשתמש בדף Datagroups בלוח Admin כדי לראות את קבוצות הנתונים הקיימות. אפשר לראות את החיבור, המודל והסטטוס הנוכחי של כל קבוצת נתונים, ואם צוין ב-LookML – גם תווית ותיאור לכל קבוצת נתונים. אפשר גם לאפס את המטמון של קבוצת נתונים, להפעיל את קבוצת הנתונים או לעבור אל קובץ ה-LookML של קבוצת הנתונים.

שמירת שאילתות במטמון באמצעות persist_for

אפשר להשתמש בפרמטר persist_for ברמת המודל או ברמת החיפוש כדי לשנות את מרווח ברירת המחדל של שמירת המטמון ב-Looker, שהוא שעה אחת. אפשר להגדיר מרווחים קצרים כמו 0 minutes או ארוכים כמו 8760 hours (שנה) או יותר.

הגדרת פרמטרים של persist_for יכולה להיות מהירה ופשוטה יותר, אבל פחות חזקה, מאשר הגדרת קבוצות נתונים. מומלץ להשתמש בקבוצות נתונים במקום ב-persist_for מהסיבות הבאות:

  • אפשר לסנכרן קבוצות נתונים עם תהליך ה-ETL של מסד הנתונים.
  • אפשר לעשות שימוש חוזר בקבוצות נתונים בכמה מודלים ובניתוחים. המשמעות היא שאפשר לעדכן את max_cache_age של קבוצת נתונים, והמדיניות בנושא שמירה במטמון תתעדכן בכל מקום שבו נעשה שימוש בקבוצת הנתונים.
  • אפשר לנקות את כל המטמון שמשויך לקבוצת נתונים מהדף Datagroups (קבוצות נתונים).