Transcodificare i dati del mainframe da remoto su Google Cloud

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.

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

Prima di iniziare

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à:

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

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

Passaggi successivi