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

אחזור קישורים של שרשרת מקורות נתונים בכמה Google Cloud אזורים באמצעות גישה של fan-out. אתם משתמשים ב-Data Lineage API כדי לאחזר ולצבור נתוני שושלת מכל האזורים הזמינים.

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

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

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

פסאודו קוד מפורט

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

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

  1. הגדרת קלט:
    • linksToFetch = 5 (מספר הקישורים לאחזור מכל האזורים)
    • regionalPageToken = "" (אסימון הדף האזורי האחרון שהתקבל, שמשמש להחלפת דפים)
  2. יצירה:
    1. רשימה של כל האזורים ל-fan-out שנקראת 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. ‫if foundLinks is less than linksToFetch
        1. להמשיך את הקוד המדומה עם התשובה הבאה שהתקבלה לפי סדר אלפביתי.
      6. if foundLinks equals linksToFetch
        1. שולחים בקשה נוספת לנקודת הקצה projects.locations.searchLinks באותו אזור, אבל מגדירים את הפרמטר pageSize לערך של lastRegionLinksCount.
        2. הדף pageToken נשמר בחנות בnextPageToken.
        3. ממשיכים לשלב 9.
  9. מוסיפים את lastRegion לפני nextPageToken (כלומר [region].[receivedNextPageToken]) כדי ליצור nextRegionalPageToken לטיפול במספור העמודים בבקשות עוקבות.

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