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

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

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

כדי לקבל מידע על השימוש במטמון של מטא-נתונים עבור עבודת שאילתה, קוראים לשיטה 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.REFRESH_EXTERNAL_METADATA_CACHE באמצעות bq query, חשוב לציין את הסימון --location.

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