קידוד מחדש של נתוני מחשב מרכזי מרחוק ב-Google Cloud

קידוד מחדש של נתונים באופן מקומי במחשב מרכזי הוא תהליך שדורש הרבה משאבי CPU, וכתוצאה מכך צריכה גבוהה של מיליוני הוראות לשנייה (MIPS). כדי להימנע מכך, אפשר להשתמש ב-Cloud Run כדי להעביר נתונים ממחשב מרכזי ולשנות את הקידוד שלהם מרחוק ב-Google Cloud לפורמט ORC (שורה אופטימלית בעמודה), ואז להעביר את הנתונים ל-Cloud Storage. כך המחשב המרכזי מתפנה למשימות קריטיות לעסק, וגם צריכת ה-MIPS יורדת.

בתרשים הבא מתואר איך אפשר להעביר את נתוני המיינפריים אלGoogle Cloud , לבצע המרה מרחוק לפורמט ORC באמצעות Cloud Run, ואז להעביר את התוכן אל BigQuery.

המרת קידוד של נתוני מחשב מרכזי מרחוק
קידוד מרחוק של נתונים במחשב מרכזי

לפני שמתחילים

העברת נתונים ממחשב מרכזי Google Cloud והמרת קידוד מרחוק באמצעות Cloud Run

כדי להעביר את הנתונים מהמחשב המרכזי אל Google Cloud ולבצע המרה מרחוק באמצעות Cloud Run, צריך לבצע את המשימות הבאות:

  1. קריאה ושינוי קידוד של מערך נתונים במחשב מרכזי, והעלאה שלו ל-Cloud Storage בפורמט ORC. הטרנסקוד נעשה במהלך הפעולה gsutil cp, שבה מערך נתונים של קוד החלפה עשרוני בינארי מורחב של מחשב מרכזי (EBCDIC) מומר לפורמט ORC ב-UTF-8 במהלך ההעתקה לקטגוריית Cloud Storage.
  2. טוענים את מערך הנתונים לטבלה ב-BigQuery.
  3. (אופציונלי) מריצים שאילתת SQL בטבלת BigQuery.
  4. (אופציונלי) מייצאים נתונים מ-BigQuery לקובץ בינארי ב-Cloud Storage.

כדי לבצע את המשימות האלה, פועלים לפי השלבים הבאים:

  1. במחשב המרכזי, יוצרים משימה לקריאת מערך הנתונים במחשב המרכזי ולקידוד שלו לפורמט ORC, באופן הבא. קריאת הנתונים ממערך הנתונים INFILE, ופריסת הרשומות מ-COPYBOOK DD. קובץ מערך הנתונים של הקלט חייב להיות קובץ בשיטת גישה רציפה בתור (QSAM) עם אורך רשומה קבוע או משתנה.

    רשימה מלאה של משתני הסביבה שנתמכים על ידי Mainframe Connector מופיעה במאמר משתני סביבה.

    //STEP01 EXEC BQSH
    //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //STDIN DD *
    gsutil cp --replace gs://mybucket/tablename.orc --remote \
      --remoteHost <mainframe-connector-url>.a.run.app \
      --remotePort 443
    /*
    

    אם רוצים לתעד את הפקודות שהופעלו במהלך התהליך הזה, אפשר להפעיל את סטטיסטיקת הטעינה.

  2. (אופציונלי) יוצרים ומגישים עבודת שאילתה ב-BigQuery שמבצעת קריאת SQL מקובץ ה-DD של השאילתה. בדרך כלל השאילתה תהיה הצהרת MERGE או SELECT INTO DML שתגרום לשינוי של טבלה ב-BigQuery. הערה: Mainframe Connector מתעד מדדי עבודה ביומן, אבל לא כותב את תוצאות השאילתה לקובץ.

    אפשר להריץ שאילתות ב-BigQuery בכמה דרכים – בשורה, עם מערך נתונים נפרד באמצעות DD, או עם מערך נתונים נפרד באמצעות DSN.

    Example JCL
    //STEP03 EXEC BQSH
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    PROJECT=PROJECT_NAME
    LOCATION=LOCATION
    bq query --project_id=$PROJECT \
      --location=$LOCATION \
      --remoteHost <mainframe-connector-url>.a.run.app \
      --remotePort 443/*
    /*
    

    בנוסף, צריך להגדיר את משתנה הסביבה BQ_QUERY_REMOTE_EXECUTION=true.

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_NAME: שם הפרויקט שבו רוצים להריץ את השאילתה.
    • LOCATION: המיקום שבו השאילתה תופעל. מומלץ להריץ את השאילתה במיקום שקרוב לנתונים.
  3. (אופציונלי) יוצרים ושולחים משימת ייצוא שמבצעת קריאת SQL מקובץ ה-DD של השאילתה, ומייצאת את מערך הנתונים שמתקבל ל-Cloud Storage כקובץ בינארי.

    Example JCL
    //STEP04 EXEC BQSH
    //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    PROJECT=PROJECT_NAME
    DATASET_ID=DATASET_ID
    DESTINATION_TABLE=DESTINATION_TABLE
    BUCKET=BUCKET
    bq export --project_id=$PROJECT \
      --dataset_id=$DATASET_ID \
      --destination_table=$DESTINATION_TABLE \
      --location="US" \
      --bucket=$BUCKET \
      --remoteHost <mainframe-connector-url>.a.run.app \
      --remotePort 443
    /*
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_NAME: שם הפרויקט שבו רוצים להריץ את השאילתה.
    • DATASET_ID: מזהה מערך הנתונים ב-BigQuery שמכיל את הטבלה שרוצים לייצא.
    • DESTINATION_TABLE: הטבלה ב-BigQuery שרוצים לייצא.
    • BUCKET: קטגוריית Cloud Storage שתכיל את קובץ הפלט הבינארי.

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