Transcodifique dados de mainframe remotamente em Google Cloud

A transcodificação de dados localmente num mainframe é um processo que consome muita CPU e resulta num elevado consumo de milhões de instruções por segundo (MIPS). Para evitar esta situação, pode usar o Cloud Run para mover e transcodificar dados de mainframe remotamente no Google Cloud para o formato de colunas otimizado para linhas (ORC) e, em seguida, mover os dados para o Cloud Storage. Isto liberta o mainframe para tarefas críticas para a empresa e também reduz o consumo de MIPS.

A figura seguinte descreve como pode mover os dados do mainframe para o Google Cloud e transcodificá-los remotamente para o formato ORC através do Cloud Run e, em seguida, mover o conteúdo para o BigQuery.

Transcodifique remotamente dados de mainframe
Transcodificar remotamente dados de mainframe

Antes de começar

Mova os dados do mainframe para o Google Cloud e transcodifique-os remotamente com o Cloud Run

Para mover os dados do mainframe para o Google Cloud e transcodificá-los remotamente através do Cloud Run, tem de realizar as seguintes tarefas:

  1. Ler e transcodificar um conjunto de dados num mainframe e carregá-lo para o Cloud Storage no formato ORC. A transcodificação é feita durante a operação gsutil cp, em que um conjunto de dados de código de intercâmbio decimal binário expandido (EBCDIC) de mainframe é convertido para o formato ORC em UTF-8 durante a cópia para um contentor do Cloud Storage.
  2. Carregue o conjunto de dados para uma tabela do BigQuery.
  3. (Opcional) Execute uma consulta SQL na tabela do BigQuery.
  4. (Opcional) Exporte dados do BigQuery para um ficheiro binário no Cloud Storage.

Para realizar estas tarefas, siga estes passos:

  1. No mainframe, crie uma tarefa para ler o conjunto de dados no mainframe e transcodificá-lo para o formato ORC, da seguinte forma. Ler os dados do conjunto de dados INFILE e o esquema de registo do COPYBOOK DD. O conjunto de dados de entrada tem de ser um ficheiro do método de acesso sequencial em fila (QSAM) com comprimento de registo fixo ou variável.

    Para ver a lista completa de variáveis de ambiente suportadas pelo Mainframe Connector, consulte o artigo 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 quiser registar os comandos executados durante este processo, pode ativar as estatísticas de carregamento.

  2. (Opcional) Crie e envie uma tarefa de consulta do BigQuery que execute uma leitura SQL a partir do ficheiro DD QUERY. Normalmente, a consulta é uma declaração MERGE ou SELECT INTO DML que resulta na transformação de uma tabela do BigQuery. Tenha em atenção que o conetor do mainframe regista as métricas de tarefas, mas não escreve os resultados das consultas num ficheiro.

    Pode consultar o BigQuery de várias formas: inline, com um conjunto de dados separado através de DD ou com um conjunto de dados separado através de 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, tem de definir a variável de ambiente BQ_QUERY_REMOTE_EXECUTION=true.

    Substitua o seguinte:

    • PROJECT_NAME: o nome do projeto no qual quer executar a consulta.
    • LOCATION: a localização onde a consulta vai ser executada. Recomendamos que execute a consulta numa localização próxima dos dados.
  3. (Opcional) Crie e envie uma tarefa de exportação que execute uma leitura SQL a partir do ficheiro DD QUERY e exporte o conjunto de dados resultante para o Cloud Storage como um ficheiro 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 o seguinte:

    • PROJECT_NAME: o nome do projeto no qual quer executar a consulta.
    • DATASET_ID: O ID do conjunto de dados do BigQuery que contém a tabela que quer exportar.
    • DESTINATION_TABLE: a tabela do BigQuery que quer exportar.
    • BUCKET: O contentor do Cloud Storage que vai conter o ficheiro binário de saída.

O que se segue?