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.
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:
- 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.
- 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. - Carregue 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 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
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 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 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.
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.
(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 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.
(Opcional) Crie e envie um job de consulta do BigQuery que execute uma leitura SQL do arquivo QUERY DD. 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 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.
(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.