Das lokale Transcodieren von Daten auf einem Mainframe ist ein CPU-intensiver Prozess, bei dem mit einem hohen Verbrauch von Millionen Anweisungen pro Sekunde (MIPS). Um dies zu vermeiden, können Sie mit Cloud Run Mainframe-Daten Google Cloud So wird Ihr Mainframe für geschäftskritische Aufgaben freigegeben und der MIPS-Verbrauch wird reduziert.
Wenn Sie sehr große Datenmengen verschieben möchten (etwa 500 GB pro Tag oder mehr) vom Mainframe zu Google Cloud übertragen, und möchten diesen nicht können Sie eine Cloud-fähige VTL-Lösung (Virtual Tape Library) verwenden, um die Daten in einen Cloud Storage-Speicher zu übertragen. Bucket. Anschließend können Sie mit Cloud Run die im Bucket vorhandenen Daten transkodieren und in BigQuery verschieben.
Auf dieser Seite erfahren Sie, wie Sie Mainframe-Daten, die in einen Cloud Storage-Bucket kopiert wurden, lesen, aus dem EBCDIC-Dataset (Extended Binary Coded Decimal Interchange Code) in das ORC-Format in UTF-8 umwandeln und das Dataset in eine BigQuery-Tabelle laden.
Das folgende Diagramm zeigt, wie Sie Ihre Mainframe-Daten mit einer VTL-Lösung in einen Cloud Storage-Bucket verschieben, die Daten mit Cloud Run in das ORC-Format umwandeln und die Inhalte dann in BigQuery verschieben.
Hinweis
- Wählen Sie eine VTL-Lösung, die Ihren Anforderungen entspricht, und verschieben Sie Ihren Mainframe
Daten in einen Cloud Storage-Bucket und speichern Sie sie als
.dat
. Achten Sie darauf, dass Sie der hochgeladenen.dat
-Datei einen Metadatenschlüssel mit dem Namenx-goog-meta-lrecl
hinzufügen und dass die Länge des Metadatenschlüssels der Datensatzlänge der ursprünglichen Datei entspricht, z. B. 80. - Mainframe-Connector in Cloud Run bereitstellen
- Legen Sie in Ihrem Mainframe die Umgebungsvariable
GCSDSNURI
auf den Präfix, das Sie für Ihre Mainframe-Daten im Cloud Storage-Bucket verwendet haben. Ersetzen Sie Folgendes:export GCSDSNURI="gs://BUCKET/PREFIX"
- BUCKET: Der Name des Cloud Storage-Bucket.
- PREFIX: Das Präfix, das Sie im Bucket verwenden möchten.
- Erstellen Sie ein Dienstkonto oder legen Sie ein Vorhandenes Dienstkonto für die Verwendung mit dem Mainframe-Connector. Dieses Dienstkonto muss Berechtigungen für den Zugriff auf Cloud Storage-Buckets, BigQuery-Datasets und alle anderen Google Cloud-Ressourcen haben, die Sie verwenden möchten.
- Achten Sie darauf, dass dem von Ihnen erstellten Dienstkonto die Rolle Cloud Run-Aufrufer zugewiesen ist.
In einen Cloud Storage-Bucket hochgeladene Mainframe-Daten transcodieren
Um Mainframe-Daten mit VTL in Google Cloud zu verschieben und sie remote zu transcodieren, müssen Sie die folgenden Aufgaben ausführen:
- Daten in einem Cloud Storage-Bucket lesen und in das ORC-Format umwandeln. Bei der Transcodierung wird ein EBCDIC-Dataset eines Mainframes in das ORC-Format in UTF-8 konvertiert.
- Laden Sie das Dataset in eine BigQuery-Tabelle.
- Optional: Führen Sie eine SQL-Abfrage für die BigQuery-Tabelle aus.
- Optional: Daten aus BigQuery in eine Binärdatei in Cloud Storage exportieren.
So führen Sie diese Aufgaben aus:
Erstellen Sie im Mainframe einen Job zum Lesen der Daten aus einem
.dat
in einem Cloud Storage-Bucket speichern und in das ORC-Format transcodieren. Gehen Sie dazu so vor:Eine vollständige Liste der vom Mainframe-Connector unterstützten Umgebungsvariablen finden Sie unter Umgebungsvariablen.
//STEP01 EXEC BQSH //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME //STDIN DD * gsutil cp --replace gs://mybucket/tablename.orc \ --inDsn INPUT_FILENAME \ --remoteHost <mainframe-connector-url>.a.run.app \ --remotePort 443 \ --project_id PROJECT_NAME /*
Ersetzen Sie Folgendes:
PROJECT_NAME
: der Name des Projekts, in dem Sie um die Abfrage auszuführen.INPUT_FILENAME
: Der Name des.dat
. -Datei, die Sie in einen Cloud Storage-Bucket hochgeladen haben.
Wenn Sie die während dieses Vorgangs ausgeführten Befehle protokollieren möchten, können Sie die Ladestatistiken aktivieren.
Optional: Erstellen und senden Sie einen BigQuery-Abfragejob, der eine SQL-Leseoperation aus der QUERY-DD-Datei ausführt. In der Regel ist die Abfrage
MERGE
oderSELECT INTO DML
. -Anweisung, die zur Transformation einer BigQuery-Tabelle führt. Hinweis: Der Mainframe-Connector protokolliert Jobmesswerte, schreibt Abfrageergebnisse aber nicht in eine Datei.Sie können BigQuery auf verschiedene Arten inline abfragen, mit einem separaten mithilfe von DD oder mit einem separaten Datensatz mithilfe von 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/* /*
Ersetzen Sie Folgendes:
PROJECT_NAME
: der Name des Projekts, in dem Sie um die Abfrage auszuführen.LOCATION
: Der Ort, an dem die Abfrage ausgeführt wird. ausgeführt haben. Wir empfehlen, die Abfrage an einem Ort auszuführen, der sich in der Nähe der Daten befindet.
Optional: Erstellen und senden Sie einen Exportjob, der eine SQL-Leseoperation aus der QUERY-DD-Datei ausführt und den resultierenden Datensatz 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 enthält die Tabelle, die Sie exportieren möchten.DESTINATION_TABLE
: Die BigQuery-Tabelle, die Sie exportieren möchten.BUCKET
: Der Cloud Storage-Bucket, der die Binärdatei der Ausgabe enthalten.