La transcodifica dei dati localmente su un mainframe è un processo che richiede molta CPU e comporta un elevato consumo di milioni di istruzioni al secondo (MIPS). Per evitare questo problema, puoi utilizzare Cloud Run per spostare e transcodificare i dati del mainframe da remoto su Google Cloud. In questo modo, il mainframe viene liberato per le attività business critical e viene anche ridotto il consumo di MIPS.
Il seguente diagramma mostra come spostare i dati del mainframe in un bucket Cloud Storage, transcodificarli nel formato ORC utilizzando Cloud Run e spostare i contenuti in BigQuery.
Prima di iniziare
- Esegui il deployment di Mainframe Connector in Cloud Run.
- Crea un account di servizio o identifica un account di servizio esistente da utilizzare con Mainframe Connector. Questo account di servizio deve disporre delle autorizzazioni per accedere ai bucket Cloud Storage, ai set di dati BigQuery e a qualsiasi altra risorsa Google Cloud che vuoi utilizzare.
- Assicurati che all'account di servizio che hai creato sia assegnato il ruolo Invoker di Cloud Run.
Spostare i dati del mainframe su Google Cloud e transcodirli da remoto utilizzando Cloud Run
Per spostare i dati del mainframe in Google Cloud e transcodificarli da remoto utilizzando Cloud Run, devi eseguire le seguenti attività:
- Leggi e transcodifica un set di dati su un mainframe e caricalo su Cloud Storage
in formato ORC. La transcodifica viene eseguita durante l'operazione
cp
, in cui un set di dati EBCDIC (Extended Bin coded Interchange Code) deframe viene convertito nel formato ORC in UTF-8 durante la copia in un bucket Cloud Storage. - Carica il set di dati in una tabella BigQuery.
- (Facoltativo) Esegui una query SQL sulla tabella BigQuery.
- (Facoltativo) Esporta i dati da BigQuery in un file binario in Cloud Storage.
Per eseguire queste attività, segui questi passaggi:
Sul mainframe, crea un job per leggere il set di dati sul mainframe e transcodificarlo in formato ORC, come segue. Leggi i dati del set di dati INFILE e il layout dei record da COPYBOOK DD. Il set di dati di input deve essere un file QSAM (metodo di accesso sequenziale in coda) con lunghezza del record fissa o variabile.
Per l'elenco completo delle variabili di ambiente supportate da Mainframe Connector, consulta Variabili di ambiente.
//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 /*
Se vuoi registrare i comandi eseguiti durante questa procedura, puoi abilitare le statistiche di caricamento.
(Facoltativo) Crea e invia un job di query BigQuery che esegue una lettura SQL dal file DD QUERY. In genere, la query sarà un'istruzione
MERGE
oSELECT INTO DML
che comporta la trasformazione di una tabella BigQuery. Tieni presente che il connettore Mainframe registra le metriche dei job, ma non scrive i risultati delle query in un file.Puoi eseguire query su BigQuery in vari modi: in linea, con un set di dati distinto utilizzando DD o con un set di dati distinto utilizzando 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/* /*
Inoltre, devi impostare la variabile di ambiente
BQ_QUERY_REMOTE_EXECUTION=true
.Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto in cui vuoi eseguire la query.LOCATION
: la posizione in cui verrà eseguita la query. Ti consigliamo di eseguire la query in una posizione vicina ai dati.
(Facoltativo) Crea e invia un job di esportazione che esegua una lettura SQL dal file DD QUERY ed esporti il set di dati risultante in Cloud Storage come file binario.
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 /*
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto in cui vuoi eseguire la query.DATASET_ID
: l'ID set di dati BigQuery che contiene la tabella da esportare.DESTINATION_TABLE
: la tabella BigQuery che vuoi esportare.BUCKET
: il bucket Cloud Storage che conterrà il file binario di output.
Passaggi successivi
- Spostare i dati del mainframe transcodificati localmente in Google Cloud
- Transcodifica i dati del mainframe da remoto su Google Cloud
- Transcodifica i dati del mainframe spostati in Google Cloud utilizzando una raccolta di nastri virtuali