Mainframe-Daten per Remotezugriff auf Google Cloud transkodieren

Das lokale Transcodieren von Daten auf einem Mainframe ist ein CPU-intensiver Prozess, der zu einem hohen Verbrauch von Millionen von Anweisungen pro Sekunde (MIPS) führt. Um dies zu vermeiden, können Sie Cloud Run verwenden, um Mainframe-Daten remote in das optimierte spaltenorientierte (Optimized Row Columnar, ORC) Format zu verschieben und zu transkodieren und die Daten dann in Cloud Storage zu verschieben.Google Cloud So wird Ihr Mainframe für geschäftskritische Aufgaben freigegeben und der MIPS-Verbrauch wird reduziert.

In der folgenden Abbildung wird beschrieben, wie Sie Ihre Mainframe-Daten zuGoogle Cloud verschieben, sie mit Cloud Run remote in das ORC-Format transkodieren und die Inhalte dann in BigQuery verschieben können.

Mainframe-Daten aus der Ferne transcodieren
Mainframe-Daten remote transkodieren

Hinweis

Mainframe-Daten zu Google Cloud verschieben und mit Cloud Run remote transcodieren

Wenn Sie Ihre Mainframe-Daten zu Google Cloud verschieben und sie mit Cloud Run per Fernzugriff transkodieren möchten, müssen Sie die folgenden Aufgaben ausführen:

  1. Ein Dataset auf einem Mainframe lesen und transkodieren und im ORC-Format in Cloud Storage hochladen. Die Transcodierung erfolgt während des Vorgangs gsutil cp, bei dem ein EBCDIC-Dataset (Extended Binary Coded Decimal Interchange Code) des Mainframes beim Kopieren in einen Cloud Storage-Bucket in das ORC-Format in UTF-8 konvertiert wird.
  2. Laden Sie das Dataset in eine BigQuery-Tabelle.
  3. Optional: Führen Sie eine SQL-Abfrage für die BigQuery-Tabelle aus.
  4. Optional: Daten aus BigQuery in eine Binärdatei in Cloud Storage exportieren

Führen Sie dazu die folgenden Schritte aus:

  1. Erstellen Sie auf Ihrem Mainframe einen Job, um das Dataset auf Ihrem Mainframe zu lesen und es wie folgt in das ORC-Format zu transkodieren. Lesen Sie die Daten aus dem INFILE-Dataset und das Datensatzlayout aus dem COPYBOOK DD. Das Eingabe-Dataset muss eine QSAM-Datei (Queued Sequential Access Method) mit fester oder variabler Datensatzlänge sein.

    Eine vollständige Liste der vom Mainframe Connector unterstützten Umgebungsvariablen finden Sie unter Umgebungsvariablen.

    //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
    /*
    

    Wenn Sie die während dieses Vorgangs ausgeführten Befehle protokollieren möchten, können Sie Ladestatistiken aktivieren.

  2. Optional: Erstellen und senden Sie einen BigQuery-Abfragejob, der einen SQL-Lesevorgang aus der QUERY DD-Datei ausführt. Normalerweise ist die Abfrage eine MERGE- oder SELECT INTO DML-Anweisung, die zur Transformation einer BigQuery-Tabelle führt. Hinweis: Mainframe Connector protokolliert Jobmesswerte, schreibt aber keine Abfrageergebnisse in eine Datei.

    Sie können BigQuery auf verschiedene Arten abfragen: inline, mit einem separaten Dataset mit DD oder mit einem separaten Dataset mit 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/*
    /*
    

    Außerdem müssen Sie die Umgebungsvariable BQ_QUERY_REMOTE_EXECUTION=true festlegen.

    Ersetzen Sie Folgendes:

    • PROJECT_NAME: Der Name des Projekts, in dem Sie die Abfrage ausführen möchten.
    • LOCATION: Der Ort, an dem die Abfrage ausgeführt wird. Wir empfehlen, die Abfrage an einem Ort auszuführen, der sich in der Nähe der Daten befindet.
  3. Optional: Erstellen und senden Sie einen Exportjob, der einen SQL-Lesevorgang aus der QUERY DD-Datei ausführt und das resultierende Dataset als Binärdatei in Cloud Storage exportiert.

    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
    /*
    

    Ersetzen Sie Folgendes:

    • PROJECT_NAME: Der Name des Projekts, in dem Sie die Abfrage ausführen möchten.
    • DATASET_ID: Die BigQuery-Dataset-ID, die die Tabelle enthält, die Sie exportieren möchten.
    • DESTINATION_TABLE: Die BigQuery-Tabelle, die Sie exportieren möchten.
    • BUCKET: Der Cloud Storage-Bucket, der die binäre Ausgabedatei enthält.

Nächste Schritte