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.
Se vuoi spostare volumi molto grandi di dati (circa 500 GB al giorno o più) dal tuo mainframe a Google Cloud e non vuoi utilizzare il mainframe per questa operazione, puoi utilizzare una soluzione Virtual Tape Library (VTL) basata su cloud per trasferire i dati in un bucket Cloud Storage. Puoi quindi utilizzare Cloud Run per transcodificare i dati presenti nel bucket e spostarli in BigQuery.
Questa pagina spiega come leggere i dati del mainframe copiati in un bucket Cloud Storage, transcodirli dal set di dati EBCDIC (Extended Binary Coded Decimal Interchange Code) al formato ORC in UTF-8 e caricare il set di dati in una tabella BigQuery.
Il seguente diagramma mostra come spostare i dati del mainframe in un bucket Cloud Storage utilizzando una soluzione VTL, transcodificare i dati nel formato ORC utilizzando Cloud Run e spostare i contenuti in BigQuery.
Prima di iniziare
- Scegli una soluzione VTL adatta alle tue esigenze, sposta i dati del mainframe in un bucket Cloud Storage e salvali come
.dat
. Assicurati di aggiungere una chiave dei metadati denominatax-goog-meta-lrecl
al file.dat
caricato e che la lunghezza della chiave dei metadati sia uguale alla lunghezza del record del file originale, ad esempio 80. - Esegui il deployment di Mainframe Connector in Cloud Run.
- Nel mainframe, imposta la variabile di ambiente
GCSDSNURI
sul prefisso che hai utilizzato per i dati del mainframe nel bucket Cloud Storage. Sostituisci quanto segue:export GCSDSNURI="gs://BUCKET/PREFIX"
- BUCKET: il nome del bucket Cloud Storage.
- PREFIX: il prefisso da utilizzare nel bucket.
- 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.
Transcodifica dei dati del mainframe caricati in un bucket Cloud Storage
Per spostare i dati del mainframe su Google Cloud utilizzando VTL e la transcodifica da remoto, devi eseguire le seguenti attività:
- Leggere e transcodificare i dati presenti in un bucket Cloud Storage nel formato ORC. L'operazione di transcodifica converte un set di dati EBCDIC mainframe nel formato ORC in UTF-8.
- 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:
Nel mainframe, crea un job per leggere i dati da un file
.dat
in un bucket Cloud Storage e transcodiscili in formato ORC, come segue.Per l'elenco completo delle variabili di ambiente supportate da Mainframe Connector, consulta Variabili di ambiente.
//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 /*
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto in cui vuoi eseguire la query.INPUT_FILENAME
: il nome del file.dat
che hai caricato in un bucket Cloud Storage.
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/* /*
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.