Transcodifica i dati del mainframe da remoto su Google Cloud

La transcodifica dei dati in locale su un mainframe è un processo che richiede un utilizzo elevato della 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 in remoto suGoogle Cloud nel formato ORC (Optimized Row Columnar) e poi spostare i dati in Cloud Storage. In questo modo, il mainframe è libero per le attività business-critical e si riduce anche il consumo di MIPS.

La figura seguente descrive come spostare i dati del mainframe in Google Cloud e transcodificarli in remoto nel formato ORC utilizzando Cloud Run, per poi spostare i contenuti in BigQuery.

Transcodifica da remoto dei dati del mainframe
Transcodifica da remoto dei dati del mainframe

Prima di iniziare

Sposta i dati del mainframe in Google Cloud e transcodificali da remoto utilizzando Cloud Run

Per spostare i dati del mainframe in Google Cloud e transcodificarli da remoto utilizzando Cloud Run, devi svolgere le seguenti attività:

  1. Leggi e transcodifica un set di dati su un mainframe e caricalo in Cloud Storage in formato ORC. La transcodifica viene eseguita durante l'operazione gsutil cp, in cui un set di dati EBCDIC (Extended Binary Coded Decimal Interchange Code) del mainframe 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 trascodificarlo nel formato ORC, come segue. Leggi i dati dal set di dati INFILE e il layout del record da COPYBOOK DD. Il set di dati di input deve essere un file con metodo di accesso sequenziale in coda (QSAM) 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 attivare le statistiche di caricamento.

  2. (Facoltativo) Crea e invia un job di query BigQuery che esegue una lettura SQL dal file QUERY DD. In genere, la query è un'istruzione MERGE o SELECT INTO DML che comporta la trasformazione di una tabella BigQuery. Tieni presente che Mainframe Connector registra le metriche dei job, ma non scrive i risultati della query in un file.

    Puoi eseguire query BigQuery in vari modi: inline, con un set di dati separato utilizzando DD o con un set di dati separato 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 località vicina ai dati.
  3. (Facoltativo) Crea e invia un job di esportazione che esegue una lettura SQL dal file QUERY DD ed esporta 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 che vuoi esportare.
    • DESTINATION_TABLE: la tabella BigQuery che vuoi esportare.
    • BUCKET: il bucket Cloud Storage che conterrà il file binario di output.

Passaggi successivi