La transcodifica dei dati localmente su un mainframe è un processo che richiede un uso intensivo della CPU in un consumo elevato di milioni di istruzioni al secondo (MIPS). Per evitare che ciò accada, puoi utilizzare Cloud Run per spostare e transcodificare i dati mainframe da remoto in Google Cloud. Ciò consente di liberare il mainframe per le attività fondamentali dell'azienda riduce 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 in BigQuery e spostarlo 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 e sposta il mainframe
in un bucket Cloud Storage e salvarli 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 che vuoi 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 i dati del mainframe caricati in un bucket Cloud Storage
Per spostare i dati mainframe in Google Cloud utilizzando VTL e transcodificarli 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 nella 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 tuo mainframe, crea un job per leggere i dati da un
.dat
in un bucket Cloud Storage e transcodificarlo in formato ORC, come descritto di seguito.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 dell'organizzazione.dat
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 da il file QUERY DD. In genere, la query sarà un'istruzione
MERGE
oSELECT INTO DML
che comporta la trasformazione di una tabella BigQuery. Nota che il connettore mainframe registra nelle metriche del job, ma non scrive query i risultati 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 del set di dati BigQuery che contiene la tabella da esportare.DESTINATION_TABLE
: la tabella BigQuery che vuoi esportare.BUCKET
: il bucket Cloud Storage che contiene il file binario di output.