Transcodificar dados do mainframe movidos para o Google Cloud usando a biblioteca de fitas virtual

A transcodificação de dados localmente em um mainframe é um processo que consome muita CPU em 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 seu mainframe para tarefas críticas de negócios e também reduz o consumo de MIPS.

Se você quiser mover grandes volumes de dados (cerca de 500 GB por dia ou mais) do seu mainframe para o Google Cloud, e não quer usá-lo para para isso, é possível usar uma solução de biblioteca de fitas virtual (VTL, na sigla em inglês) habilitada para a nuvem a fim de transferir os dados para um Cloud Storage do Google Cloud. Em seguida, use o Cloud Run para transcodificar os dados presentes no bucket e movê-los para o BigQuery.

Nesta página, discutimos como ler dados de mainframe copiados para um Cloud Storage no bucket, transcodifique-o a partir do código de intercâmbio decimal codificado binário estendido (EBCDIC) para o formato ORC em UTF-8. Em seguida, Tabela do BigQuery.

O diagrama a seguir mostra como mover os dados do mainframe para um bucket do Cloud Storage usando uma solução VTL, transcodifica os dados para o ORC usando o Cloud Run e mover o conteúdo para o BigQuery.

Transcodificar dados de mainframe remotamente usando o VTL
Faça a transcodificação remota dos dados do mainframe usando a VTL

Antes de começar

  • Escolha uma solução VTL que atenda às suas necessidades e mova seu mainframe em um bucket do Cloud Storage e salvá-los como um .dat. Ensure adicionar uma chave de metadados chamado x-goog-meta-lrecl para o .dat enviado e se o comprimento da chave de metadados é igual ao do registro comprimento, por exemplo, 80.
  • No mainframe, defina a variável de ambiente GCSDSNURI como o que você usou para os dados do mainframe no bucket do Cloud Storage.
    export GCSDSNURI="gs://BUCKET/PREFIX"
    
    Substitua:
    • BUCKET: o nome do bucket do Cloud Storage.
    • PREFIX: o prefixo que você quer usar no bucket.
  • 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.

Transcodificar dados do mainframe enviados para um bucket do Cloud Storage

Para mover os dados do mainframe para o Google Cloud usando VTL e transcodificar remotamente, você precisa realizar as seguintes tarefas:

  1. Implantar o serviço remoto do Conector de mainframe usando Terraform Conector de mainframe que o serviço 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 os dados presentes em um bucket do Cloud Storage para o ORC . A operação de transcodificação converte um conjunto de dados EBCDIC de mainframe formato ORC em UTF-8.
  3. Carregar 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 Conector de mainframe.
    • 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 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 o Mainframe Connector.
    • connector_service_ingress:o tipo de entrada.
    • additional_labels: rótulos adicionais 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. Implante o Mainframe Connector.

    terraform apply -var-file=VARIABLE_FILE_NAME
    

    Substitua VARIABLE_FILE_NAME pelo arquivo de variáveis que você criou 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 os dados de um .dat em um bucket do Cloud Storage e transcodifique-o para o formato ORC, como mostrado a seguir.

    //STEP01 EXEC BQSH
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //STDIN DD *
    gsutil cp --replace gs://mybucket/tablename.orc \
    --inDsn INPUT_FILENAME \
    --remoteHost <mainframe-connector-url>.a.run.app \
    --remotePort 443 \
    --project_id PROJECT_NAME
    /*
    

    Substitua:

    • PROJECT_NAME: o nome do projeto em que você quiser executar a consulta.
    • INPUT_FILENAME: o nome do .dat. arquivo que você enviou para um bucket do Cloud Storage.

    Se você quiser registrar os comandos executados durante esse processo, ative as estatísticas de carregamento.

  10. (Opcional) Criar e enviar um job de consulta do BigQuery que execute uma leitura de SQL QUERY DD file. 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 separador conjunto de dados 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á 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 será que contêm o arquivo binário de saída.