חיפוש שושלת נתונים במספר אזורים באמצעות fan-out מצד הלקוח

הפצה בצד הלקוח ב-Knowledge Catalog (לשעבר Dataplex Universal Catalog) מאפשרת להשתמש ב-Data Lineage API כדי לאחזר ולצבור קישורים של שושלת נתונים בכמה אזורים ב- Google Cloud . שליחת שאילתות לנקודות קצה אזוריות במקביל עוזרת ליצור תצוגת שושלת מאוחדת כשנכסי הנתונים נמצאים במיקומים שונים.

למה כדאי להשתמש ב-fan-out בצד הלקוח?

גישת ה-fan-out בצד הלקוח שימושית כשנכסי הנתונים מפוזרים במיקומים שונים, ואתם רוצים לתזמר שאילתות אזוריות בצד הלקוח. אתם יכולים להשתמש בגישה הזו כדי לאחזר ולצבור נתוני שושלת מכל האזורים הזמינים כשאתם עוקבים אחרי שושלת של דילוג אחד בקבוצה ידועה של אזורים, או כשאתם שומרים על תאימות לתהליכי עבודה קיימים של projects.locations.searchLinks.

מידע נוסף זמין במאמר מידע על חיפוש שושלת נתונים במספר אזורים.

קוד מדומה שלב אחר שלב

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

הקוד המדומה הבא מתאר הליך שאפשר לבצע באמצעות Data Lineage API כדי לאחזר קישורים של שושלת נתונים מכל האזורים הזמינים.

  1. הגדרת קלט:
    • ‫linksToFetch = 5 (מספר הקישורים לאחזור מכל האזורים)
    • regionalPageToken = "" (האסימון האחרון שהתקבל לדף האזורי שמשמש לעימוד)
  2. יצירה:
    1. רשימה של כל האזורים להפצה שנקראת regions.
    2. רשימה של אזורים שאי אפשר להגיע אליהם בשם unreachable.
    3. רשימה ריקה של קישורים שנמצאו בשם foundLinks.
    4. משתנה ריק nextPageToken ו-nextRegionalPageToken.
    5. משתנה ריק lastRegion.
    6. משתנה ריק lastRegionLinksCount.
  3. מיון regions לפי סדר אלפביתי.
  4. ניתוח regionalPageToken
    1. אם הוא ריק, ממשיכים לשלב 5.
    2. אם הוא לא ריק,
      1. מנתחים את regionalPageToken על ידי פיצול לפי הנקודה הראשונה לשני פלחים
      2. לסנן אזורים על ידי בחירה רק באלה שנמצאים אחרי (בסדר אלפביתי) הפלח הראשון מ-regionalPageToken שנותח.
      3. שומרים את החלק השני בצד כדי להשתמש בו בכל הקריאות ל-projects.locations.searchLinks.
  5. שולחים קריאה ל-projects.locations.searchLinks בכל אזור ברשימה regions במקביל.
  6. מחכים שכל הבקשות יסתיימו.
  7. מסננים את התגובות המוצלחות ושומרים את שמות האזורים שנכשלו ברשימה unreachable.
  8. לכל אחת מהתגובות (החל מהאזור הראשון בסדר אלפביתי)
    1. אם לא הוחזרו קישורים יחד עם אסימון דף לא ריק
      1. שם האזור של החנות בlastRegion.
      2. שומרים את ה-pageToken שהתקבל ב-nextPageToken.
      3. להתעלם משאר התשובות.
    2. אחרת
      1. שם האזור של החנות בlastRegion.
      2. לשמור קישורים שהתקבלו ב-foundLinks (עד linksToFetch).
      3. שומרים את ה-pageToken שהתקבל ב-nextPageToken.
      4. שמירת מספר הקישורים שנלקחו מהתשובה ב-lastRegionLinksCount.
      5. אם foundLinks קטן מ-linksToFetch
        1. ממשיכים את הקוד המדומה עם התשובה הבאה שהתקבלה לפי סדר אלפביתי.
      6. אם foundLinks שווה ל-linksToFetch
        1. שולחים בקשה נוספת לנקודת הקצה projects.locations.searchLinks באותו אזור, אבל מגדירים את הפרמטר pageSize לערך של lastRegionLinksCount.
        2. שומרים את ה-pageToken שהתקבל ב-nextPageToken.
        3. עוברים לשלב 9.
  9. מוסיפים את lastRegion לפני nextPageToken (כלומר [region].[receivedNextPageToken]) כדי ליצור את nextRegionalPageToken לטיפול במספור דפים בקריאות עוקבות.

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