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.
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 chamadox-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. Substitua:export GCSDSNURI="gs://BUCKET/PREFIX"
- 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:
- 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.
- 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.
- Carregar o conjunto de dados em uma tabela do BigQuery.
- (Opcional) Execute uma consulta SQL na tabela do BigQuery.
- (Opcional) Exporte dados do BigQuery para um arquivo binário no Cloud Storage.
Para realizar essas tarefas, siga estas etapas:
Faça o download do arquivo .tar de implantação do conector de mainframe.
Extraia os arquivos no arquivo .tar da implantação.
tar -xvf ./deployment.tar
Os arquivos
main.tf
evars.tf
são extraídos de arquivo .tar da implantação.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ãoproject
econnector_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
econnector_service_vpc_access
variáveis.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.
Crie um arquivo
.tfvars
para definir as variáveis que você quer Terraform para usar durante a implantação do conector de mainframe.Abra o arquivo
.tfvars
e defina as seguintes variáveis como pares de chave-valor.instance_id
:defina uminstance_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.
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.
(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.
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.
(Opcional) Criar e enviar um job de consulta do BigQuery que execute uma leitura de SQL QUERY DD file. Normalmente, a consulta será
MERGE
ouSELECT 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.
(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.