Transcodificar dados de mainframes 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, você pode usar o Cloud Run para mover e transcodificar os dados do mainframe remotamente 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 do bucket do Cloud Storage, transcodifique os dados para o formato ORC usando o Cloud Run e, em seguida, mover o conteúdo para o BigQuery.

Transcodificar remotamente os dados do mainframe
Transcodificar remotamente os dados do mainframe

Antes de começar

  • Crie uma conta de serviço ou identifique um conta de serviço atual para usar com o Conector de mainframe. Isso a conta de serviço precisa ter permissões para acessar os buckets do Cloud Storage, conjuntos de dados do BigQuery e qualquer outro recurso do Google Cloud que você quiser usar.
  • Verifique se a conta de serviço que você criou recebe o papel Invocador do Cloud Run.

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 transcodificá-los remotamente usando o no Cloud Run, será preciso realizar as seguintes tarefas:

  1. Implantar o serviço remoto do Conector de mainframe usando Terraform Conector de mainframe remoto é baseado no Cloud Run, que permite realizar e transcodificação de mídia. Se você quiser implantar várias instâncias do Serviço remoto do conector de mainframe, consulte Implantar várias instâncias do conector de mainframe.
  2. Ler e transcodificar um conjunto de dados em um mainframe e fazer upload dele para o Cloud Storage em formato ORC. A transcodificação é feita durante a operação cp, em que um mainframe estendido de código de intercâmbio decimal codificado binário (EBCDIC) é convertido para o formato ORC em UTF-8 durante a cópia em um do bucket do Cloud Storage.
  3. Carregue o conjunto de dados em uma tabela do BigQuery.
  4. (Opcional) Execute uma consulta SQL na tabela do BigQuery.
  5. (Opcional) Exporte dados do BigQuery para um arquivo binário no Cloud Storage.

Para realizar essas tarefas, siga estas etapas:

  1. Faça o download do arquivo .tar de implantação do conector de mainframe.

  2. Extraia os arquivos no arquivo .tar da implantação.

    tar -xvf ./deployment.tar
    

    Os arquivos main.tf e vars.tf são extraídos de arquivo .tar da implantação.

  3. Revise e edite as variáveis no arquivo vars.tf. A maioria as variáveis já têm valores padrão. No entanto, é necessário definir os seguintes e a distribuição dos valores dos dados. As únicas variáveis obrigatórias para definir são project e connector_service_account_email.

    • project: o projeto do Google Cloud em que você quer instalar o Mainframe Connector.
    • connector_service_account_email:a conta de serviço que tem todas as permissões para as operações que você deseja executar usando Conector de mainframe.

    Você também pode definir a configuração de rede usando o connector_service_ingress e connector_service_vpc_access variáveis.

  4. Execute o terraform init. com um bucket do Cloud Storage e prefixo como . Usar um bucket e um prefixo do Cloud Storage ajuda a salvar o estado de implantação no bucket. Também é possível reutilizar o mesmo bucket e prefixo quando você atualizar o Conector de mainframe.

    terraform init \
    -backend-config bucket=DEPLOYMENT_STATE_BUCKET \
    -backend-config prefix=BUCKET_PREFIX
    

    Substitua:

    • DEPLOYMENT_STATE_BUCKET: o nome do bucket do Cloud Storage.
    • BUCKET_PREFIX: o prefixo que você quer usar no do bucket do Cloud Storage.
  5. Crie um arquivo .tfvars para definir as variáveis que você quer Terraform para usar durante a implantação do conector de mainframe.

  6. Abra o arquivo .tfvars e defina as seguintes variáveis como pares de chave-valor.

    • instance_id:defina um instance_id para separe cargas de trabalho diferentes quando quiser ter várias instâncias de Conector de mainframe ou para usar diferentes contas de serviço.
    • project: o projeto em que você quer implantar Conector de mainframe.
    • connector_service_ingress:o tipo de entrada.
    • additional_labels:mais rótulos se você quiser testar. a implantação.
    • connector_service_account_email:o e-mail da conta de serviço ID do conector de mainframe.

    Salve as alterações e feche o arquivo.

  7. Implantar o conector de mainframe.

    terraform apply -var-file=VARIABLE_FILE_NAME
    

    Substitua VARIABLE_FILE_NAME pelo arquivo de variáveis criado em na etapa anterior.

  8. (Opcional) Para verificar se o conector de mainframe está implantado e em execução: Acesse a página do Cloud Run e selecione a guia Serviços. Você você verá sua implantação listada na tabela.

    Acessar o Cloud Run

  9. 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 gravar o layout do COPYBOOK DD (link em inglês). O conjunto de dados de entrada precisa ser um arquivo de método de acesso sequencial (QSAM, na sigla em inglês) na fila com com comprimento fixo ou variável do registro.

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

  10. (Opcional) Crie e envie um job de consulta do BigQuery que execute uma leitura SQL do arquivo QUERY DD. Normalmente, a consulta será MERGE ou SELECT INTO DML. que resulta na transformação de uma tabela do BigQuery. Observação que o conector de mainframe registra as métricas do job, mas não grava consultas resultados 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/*
    /*
    

    Substitua:

    • PROJECT_NAME: o nome do projeto em que você quiser executar a consulta.
    • LOCATION: o local em que a consulta será feita. executada. Recomendamos que você execute a consulta em um local próximo ao dados.
  11. (Opcional) Crie e envie um job de exportação que execute uma leitura SQL do QUERY DD arquivo e exporta 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ê deseja 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.

Implantar várias instâncias do conector de mainframe

Para limitar o acesso a jobs específicos, talvez seja necessário implantar várias instâncias do conector de mainframe. Para fazer isso, implante o conector de mainframe várias vezes com variáveis e contas de serviço diferentes. Como o serviço remoto do conector de mainframe é baseado No Cloud Run, você só vai receber cobranças quando cada serviço estiver em execução. Também não é preciso configurar a alta disponibilidade, porque cada instância já está com carga balanceada e alta disponibilidade.