אחזור קישורים של שרשרת היוחסין מכמה אזורים

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

התהליך

התהליך שולח בקשות מקבילות לנקודת הקצה 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. מוסיפים את nextPageToken לפני lastRegion (כלומר [region].[receivedNextPageToken]) כדי ליצור nextRegionalPageToken לטיפול במספור העמודים בשיחות עוקבות.