Transcodificar dados de mainframe remotamente no Google Cloud

A transcodificação de dados localmente em um mainframe é um processo que exige muita CPU e resulta em um alto consumo de milhões de instruções por segundo (MIPS). Para evitar isso, use o Cloud Run para mover e transcodificar dados de mainframe remotamente no Google Cloud. Isso libera o mainframe para tarefas essenciais de negócios e também reduz o consumo de MIPS.

O diagrama a seguir mostra como mover os dados do mainframe para um bucket do Cloud Storage, transcodificar os dados para o formato ORC usando o Cloud Run e mover o conteúdo para o BigQuery.

Transcodificar dados de mainframe remotamente
Transcodificar dados de mainframe remotamente

Antes de começar

Mover dados de mainframe para o Google Cloud e fazer a transcodificação remotamente usando o Cloud Run

Para mover os dados do mainframe para o Google Cloud e fazer a transcodificação remotamente usando o Cloud Run, você precisa realizar as seguintes tarefas:

  1. Leia e transcodifique um conjunto de dados em um mainframe e faça upload dele no Cloud Storage no formato ORC. A transcodificação é feita durante a operação cp, em que um conjunto de dados de código decimal codificado binário estendido (EBCDIC) de mainframe é convertido para o formato ORC em UTF-8 durante a cópia para um bucket do Cloud Storage.
  2. Carregar o conjunto de dados em uma tabela do BigQuery.
  3. (Opcional) Execute uma consulta SQL na tabela do BigQuery.
  4. (Opcional) Exporte dados do BigQuery para um arquivo binário no Cloud Storage.

Para realizar essas tarefas, siga estas etapas:

  1. No mainframe, crie um job para ler o conjunto de dados e transcodificar para o formato ORC, conforme mostrado a seguir. Leia os dados do conjunto de dados INFILE e o layout de registro do COPYBOOK DD. O conjunto de dados de entrada precisa ser um arquivo de método de acesso sequencial em fila (QSAM, na sigla em inglês) com comprimento de registro fixo ou variável.

    Para conferir a lista completa de variáveis de ambiente compatíveis com o Mainframe Connector, consulte Variáveis de 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 você quiser registrar os comandos executados durante esse processo, ative as estatísticas de carga.

  2. (Opcional) Crie e envie um job de consulta do BigQuery que execute uma leitura SQL do arquivo QUERY DD. Normalmente, a consulta será uma instrução MERGE ou SELECT INTO DML que resulta na transformação de uma tabela do BigQuery. O conector de mainframe registra nas métricas do job, mas não grava os resultados da consulta em um arquivo.

    É possível consultar o BigQuery de várias maneiras: inline, com um conjunto de dados separado usando DD ou com um conjunto de dados separado usando 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/*
    /*
    

    Além disso, é necessário definir a variável de ambiente BQ_QUERY_REMOTE_EXECUTION=true.

    Substitua:

    • PROJECT_NAME: o nome do projeto em que você quer executar a consulta.
    • LOCATION: o local em que a consulta será executada. Recomendamos que você execute a consulta em um local próximo aos dados.
  3. (Opcional) Crie e envie um job de exportação que execute uma leitura SQL do arquivo QUERY DD e exporte o conjunto de dados resultante para o Cloud Storage como um arquivo binário.

    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
    /*
    

    Substitua:

    • PROJECT_NAME: o nome do projeto em que você quer executar a consulta.
    • DATASET_ID: o ID do conjunto de dados do BigQuery que contém a tabela que você quer exportar.
    • DESTINATION_TABLE: a tabela do BigQuery que você quer exportar.
    • BUCKET: o bucket do Cloud Storage que vai conter o arquivo binário de saída.

A seguir