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

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

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

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

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

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

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

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

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

אפשר לציין מדיניות שמירה במטמון ברמת LookML Explore וברמת מודל 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, אפשר לאלץ אחזור של תוצאות חדשות ממסד הנתונים. אחרי שמריצים שאילתה (כולל שאילתות של תוצאות משולבות), בוחרים באפשרות ניקוי המטמון ורענון בתפריט ההגדרות (סמל גלגל השיניים) של פעולות ב'ניתוח נתונים'.

שמירת שאילתות במטמון ובנייה מחדש של טבלאות נגזרות קבועות (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 שמוגדרת בקובץ מודל. לקבוצת הנתונים יש פרמטר 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 (קבוצות נתונים).