Transcodifica dei dati del mainframe spostati su Google Cloud utilizzando la raccolta di nastri virtuali

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.

Transcodifica remota dei dati del mainframe utilizzando VTL
Transcodifica da remoto i dati del mainframe utilizzando VTL

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 denominata x-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.
    export GCSDSNURI="gs://BUCKET/PREFIX"
    
    Sostituisci quanto segue:
    • 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à:

  1. 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.
  2. Carica il set di dati in una tabella BigQuery.
  3. (Facoltativo) Esegui una query SQL sulla tabella BigQuery.
  4. (Facoltativo) Esporta i dati da BigQuery in un file binario in Cloud Storage.

Per eseguire queste attività, segui questi passaggi:

  1. 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.

  2. (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 o SELECT 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.
  3. (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.