שמירת מטא-נתונים במטמון לטבלאות חיצוניות

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

טבלאות אובייקטים וסוגים מסוימים של טבלאות BigLake יכולות לשמור במטמון מידע על מטא-נתונים של קבצים במאגרי נתונים חיצוניים – לדוגמה, Cloud Storage. סוגי הטבלאות הבאים ב-BigLake תומכים בשמירת מטא-נתונים במטמון:

  • טבלאות BigLake ב-Amazon S3
  • טבלאות BigLake ב-Cloud Storage

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

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

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

הגדרות לשמירת מטא-נתונים במטמון

יש שני מאפיינים שקובעים את ההתנהגות של התכונה הזו:

  • Maximum staleness מציין מתי שאילתות משתמשות במטא-נתונים שנשמרו במטמון.
  • מצב מטמון של מטא-נתונים מציין איך המטא-נתונים נאספים.

כשמפעילים שמירת מטמון של מטא-נתונים, מציינים את המרווח המקסימלי של מטא-נתונים לא עדכניים שמתקבל על הדעת לפעולות שמתבצעות בטבלה. לדוגמה, אם מציינים מרווח של שעה אחת, פעולות שמתבצעות על הטבלה משתמשות במטא-נתונים שנשמרו במטמון אם הם רעננו בשעה האחרונה. אם המטא-נתונים שנשמרו במטמון ישנים יותר, הפעולה חוזרת לאחזור מטא-נתונים ממאגר הנתונים (Amazon S3 או Cloud Storage). אפשר לציין מרווח זמן של נתונים לא עדכניים בין 30 דקות ל-7 ימים.

אתם יכולים לבחור אם לרענן את המטמון באופן אוטומטי או ידני:

  • במקרה של רענון אוטומטי, המטמון מתרענן במרווח זמן שמוגדר על ידי המערכת, בדרך כלל בין 30 ל-60 דקות. רענון אוטומטי של המטמון הוא גישה טובה אם הקבצים במאגר הנתונים מתווספים, נמחקים או משתנים במרווחי זמן אקראיים. אם אתם צריכים לשלוט בתזמון של הרענון, למשל כדי להפעיל את הרענון בסוף של עבודת חילוץ, שינוי וטעינה, אתם יכולים להשתמש ברענון ידני.
  • כדי לרענן את המטמון באופן ידני, מריצים את ההליך של מערכת BQ.REFRESH_EXTERNAL_METADATA_CACHE כדי לרענן את מטמון המטא-נתונים לפי התזמון שקובעים. בטבלאות BigLake, אפשר לרענן את המטא-נתונים באופן סלקטיבי על ידי ציון ספריות משנה של ספריית נתוני הטבלה. הגישה הזו מאפשרת לכם להימנע מעיבוד מיותר של מטא-נתונים. רענון המטמון באופן ידני הוא גישה טובה אם הקבצים במאגר הנתונים מתווספים, נמחקים או משתנים במרווחי זמן ידועים – למשל, כפלט של צינור.

רענון ידני ורענון אוטומטי של מטמון מתבצעים עם עדיפות שאילתה של INTERACTIVE.

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

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

  • אם המטמון של המטא-נתונים של טבלה מוגדר כך שנדרש רענון ידני, ומרווח התיישנות הנתונים מוגדר ליומיים, צריך להריץ את הפרוצדורה BQ.REFRESH_EXTERNAL_METADATA_CACHE כל יומיים או פחות אם רוצים שהפעולות בטבלה ישתמשו במטא-נתונים שנשמרו במטמון.
  • אם מטמון המטא-נתונים של טבלה מוגדר לרענון אוטומטי, ומרווח העדכניות מוגדר ל-30 דקות, יכול להיות שחלק מהפעולות בטבלה יקראו ממאגר הנתונים אם רענון מטמון המטא-נתונים יימשך יותר מהטווח הרגיל של 30 עד 60 דקות.

מידע נוסף על הגדרת אפשרויות שמירה במטמון של מטא-נתונים לטבלאות BigLake זמין במאמרים יצירת טבלאות חיצוניות של BigLake ב-Amazon S3 או יצירת טבלאות חיצוניות של BigLake ב-Cloud Storage.

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

קבלת מידע על משימות רענון של מטמון המטא-נתונים

כדי למצוא מידע על עבודות רענון של מטמון המטא-נתונים, שולחים שאילתה לתצוגה INFORMATION_SCHEMA.JOBS, כמו בדוגמה הבאה:

SELECT *
FROM `region-us.INFORMATION_SCHEMA.JOBS`
WHERE job_id LIKE '%metadata_cache_refresh%'
AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR)
ORDER BY start_time DESC
LIMIT 10;

שימוש במפתחות הצפנה בניהול הלקוח עם מטא-נתונים במטמון

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

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

מפתחות CMEK שנוצרו ב-BigQuery לא חלים על הקבצים ב-Cloud Storage שמשמשים את BigLake ואת טבלאות האובייקטים. כדי להשיג הצפנת CMEK מקצה לקצה, צריך להגדיר CMEK ב-Cloud Storage עבור הקבצים האלה.

קבלת מידע על השימוש במטמון של מטא-נתונים באמצעות משימות של שאילתות

כדי לקבל מידע על השימוש במטמון של מטא-נתונים עבור משימת שאילתה, קוראים ל-method ‏jobs.get של המשימה הזו ומסתכלים על השדה MetadataCacheStatistics בקטע JobStatistics2 של משאב Job. בשדה הזה מופיע מידע על הטבלאות שמופעל בהן מטמון מטא-נתונים שבהן נעשה שימוש בשאילתה, אם נעשה שימוש במטמון המטא-נתונים בשאילתה, ואם לא, הסיבה לכך.

נתונים סטטיסטיים של טבלה

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

הנתונים הסטטיסטיים של הטבלה שנאספים כוללים פרטי קובץ כמו מספר השורות, הגודל הפיזי של הקובץ והגודל שלו ללא דחיסה, וקרדינליות של העמודות. כשמריצים שאילתה בטבלת BigLake שמבוססת על Parquet, הנתונים הסטטיסטיים האלה מסופקים לאופטימיזציה של השאילתה כדי לאפשר תכנון טוב יותר של השאילתה, וכדי לשפר את הביצועים של השאילתה עבור סוגים מסוימים של שאילתות. לדוגמה, אחת מהאופטימיזציות הנפוצות של שאילתות היא הפצת אילוצים דינמית, שבה האופטימיזציה של השאילתות מסיקה באופן דינמי פרדיקטים בטבלאות העובדות הגדולות יותר בצירוף מטבלאות המימדים הקטנות יותר. האופטימיזציה הזו יכולה להאיץ את השאילתות באמצעות סכימות טבלה מנורמלות, אבל היא דורשת נתונים סטטיסטיים מדויקים של הטבלה. הנתונים הסטטיסטיים של הטבלה שנאספים על ידי שמירת המטא-נתונים במטמון מאפשרים לבצע אופטימיזציה טובה יותר של תוכניות השאילתות ב-BigQuery וב-Apache Spark.

מגבלות

המגבלות הבאות חלות על מטמון המטא-נתונים:

  • אם תפעילו כמה רענונים ידניים בו-זמנית, רק אחד מהם יצליח.
  • אם לא מרעננים את מטמון המטא-נתונים, התוקף שלו פג אחרי 7 ימים.
  • אם מעדכנים את ה-URI של המקור של טבלה, מטמון המטא-נתונים לא מתרענן אוטומטית, והשאילתות הבאות מחזירות נתונים מהמטמון המיושן. כדי להימנע מכך, צריך לרענן את מטמון המטא-נתונים באופן ידני. אם מטמון המטא-נתונים של הטבלה מוגדר לרענון אוטומטי, צריך לשנות את מצב הרענון של הטבלה למצב ידני, לבצע את הרענון הידני ואז להגדיר שוב את מצב הרענון של הטבלה למצב אוטומטי.
  • אם אתם מרעננים ידנית את מטמון המטא-נתונים, ומערך הנתונים והקטגוריה של Cloud Storage נמצאים במיקום אזורי, אתם צריכים לציין את המיקום באופן מפורש כשאתם מפעילים את הקריאה לפרוצדורה BQ.REFRESH_EXTERNAL_METADATA_CACHE. אפשר לעשות את זה באחת מהדרכים הבאות:

    המסוף

    1. עוברים לדף BigQuery.

      כניסה ל-BigQuery

    2. בוחרים כרטיסייה בכלי העריכה.

    3. לוחצים על עוד ואז על הגדרות שאילתה.

    4. בקטע מיקום, מבטלים את הסימון בתיבת הסימון המיקום ייבחר אוטומטית ומציינים את האזור לטירגוט.

    5. לוחצים על Save.

    6. מריצים את השאילתה שמכילה את הקריאה לפרוצדורה BQ.REFRESH_EXTERNAL_METADATA_CACHE בכרטיסייה של העורך.

    BQ

    אם מריצים את השאילתה שמכילה את הקריאה לפרוצדורה באמצעות bq query, חשוב לציין את הדגל --location.BQ.REFRESH_EXTERNAL_METADATA_CACHE

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