As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Converta e descompacte dados EBCDIC em ASCII na AWS usando Python
Criado por Luis Gustavo Dantas (AWS)
Repositório de código: Mainframe Data | Ambiente: PoC ou piloto | Origem: dados do mainframe EBCDIC |
Destino: dados ASCII distribuídos ou modernizados na nuvem | Tipo R: redefinir a plataforma | Workload: IBM |
Tecnologias: mainframe; bancos de dados; armazenamento e backup; modernização | Serviços da AWS: Amazon EBS; Amazon EC2 |
Resumo
Como os mainframes normalmente hospedam dados comerciais críticos, a modernização dos dados é uma das tarefas mais importantes ao migrar dados para a nuvem da Amazon Web Services (AWS) ou outro ambiente do American Standard Code for Information Interchange (ASCII). Em mainframes, os dados geralmente são codificados no formato EBCDIC (código de intercâmbio decimal codificado por código binário estendido). A exportação de banco de dados, VSAM (Virtual Storage Access Method) ou arquivos simples geralmente produz arquivos EBCDIC binários compactados, que são mais complexos de migrar. A solução de migração de banco de dados mais usada é a captura de dados de alteração (CDC), que, na maioria dos casos, converte automaticamente a codificação de dados. No entanto, os mecanismos do CDC podem não estar disponíveis para esses bancos de dados, VSAM ou arquivos simples. Para esses arquivos, é necessária uma abordagem alternativa para modernizar os dados.
Esse padrão descreve como modernizar os dados EBCDIC convertendo-os para o formato ASCII. Após a conversão, você pode carregar os dados em bancos de dados distribuídos ou fazer com que aplicativos na nuvem processem os dados diretamente. O padrão usa o script de conversão e os arquivos de amostra no mainframe-data-utilities
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Um arquivo de entrada EBCDIC e seu copybook correspondente de linguagem comum orientada a negócios (COBOL). Um arquivo EBCDIC de amostra e um caderno COBOL estão incluídos no repositório. mainframe-data-utilities
GitHub Para obter mais informações sobre os copybooks de COBOL, consulte o Guia de Programação do Enterprise COBOL for z/OS 6.4 no site da IBM.
Limitações
Os layouts de arquivo definidos nos programas COBOL não são suportados. Eles devem ser disponibilizados separadamente.
Versões do produto
Python, versão 3.8 ou superior
Arquitetura
Pilha de tecnologia de origem
Dados EBCDIC em um mainframe
Copybook de COBOL
Pilha de tecnologias de destino
Uma instância do Amazon Elastic Compute Cloud (Amazon EC2) em uma nuvem privada virtual (VPC)
Amazon Elastic Block Store (Amazon EBS)
Python e seus pacotes necessários, JavaScript Object Notation (JSON), sys e datetime
Arquivo plano ASCII pronto para ser lido por um aplicativo moderno ou carregado em uma tabela de banco de dados relacional
Arquitetura de destino
![Dados EBCDIC convertidos em ASCII em uma instância do EC2 usando scripts Python e um caderno COBOL](images/pattern-img/f5907bfe-7dff-4cd0-8523-57015ad48c4b/images/4f97b1dd-3f20-4966-a291-22180680ea99.png)
O diagrama da arquitetura mostra o processo de conversão de um arquivo EBCDIC em um arquivo ASCII em uma instância do EC2:
Usando o script parse_copybook_to_json.py, você converte o copybook de COBOL em um arquivo JSON.
Usando o arquivo JSON e o script extract_ebcdic_to_ascii.py, você converte os dados EBCDIC em um arquivo ASCII.
Automação e escala
Depois que os recursos necessários para as primeiras conversões manuais de arquivos estiverem disponíveis, você poderá automatizar a conversão de arquivos. Esse padrão não inclui instruções para automação. Há várias maneiras de automatizar a conversão. Veja abaixo uma visão geral de uma possível abordagem:
Encapsular os comandos do AWS Command Line Interface (AWS CLI) e os comandos de script do Python em um script de shell.
Crie uma função do AWS Lambda que envie de forma assíncrona o trabalho de script de shell em uma instância do EC2. Para obter mais informações, consulte Agendamento de trabalhos de SSH usando o AWS Lambda
. Crie um acionador do Amazon Simple Storage Service (Amazon S3) que invoque a função do Lambda toda vez que um arquivo legado for carregado. Para obter mais informações, consulte Como usar um trigger do Amazon S3 para invocar uma função do Lambda.
Ferramentas
Serviços da AWS
O Amazon Elastic Compute Cloud (Amazon EC2) oferece capacidade computacional escalável na Nuvem AWS. Você pode iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
O Amazon Elastic Block Store (Amazon EBS) oferece volumes de armazenamento ao nível do bloco para usar com instâncias do Amazon Elastic Compute Cloud (Amazon EC2).
A AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.
O AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.
Outras ferramentas
Repositório de código
O código desse padrão está disponível no mainframe-data-utilities
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Inicie uma instância do EC2. | A instância do EC2 deve ter acesso de saída à internet. Isso permite que a instância acesse o código-fonte do Python disponível em. GitHub Para criar a instância:
| AWS geral |
Instale o Git. |
| AWS geral, Linux |
Instalar o Python. |
| AWS geral, Linux |
Clone o GitHub repositório. |
| AWS geral, GitHub |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Analise o copybook de COBOL no arquivo de layout JSON. | Dentro da pasta O comando a seguir converte o copybook de COBOL em um arquivo JSON.
O script imprime os argumentos recebidos.
Para obter mais informações sobre os argumentos, consulte o arquivo README | AWS geral, Linux |
Inspecione o arquivo de layout JSON. |
Os atributos mais importantes do arquivo de layout JSON são:
Para obter mais informações sobre o arquivo de layout JSON, consulte o arquivo README no GitHub repositório | AWS geral, JSON |
Criar o arquivo ASCII. | Execute o script extract_ebcdic_to_ascii.py, que está incluído no GitHub repositório clonado. Esse script lê o arquivo EBCDIC e grava um arquivo ASCII convertido e legível.
Conforme o script processa os dados do EBCDIC, ele imprime uma mensagem para cada lote de 10.000 registros. Veja o exemplo a seguir.
Para obter informações sobre como alterar a frequência de impressão, consulte o arquivo README | AWS geral |
Examinar o arquivo ASCII. |
Se você usou o arquivo EBCDIC de amostra fornecido, o seguinte é o primeiro registro no arquivo ASCII.
| AWS geral, Linux |
Avalie o arquivo EBCDIC. | No console do Amazon EC2, insira o comando a seguir. Isso abre o primeiro registro do arquivo EBCDIC.
Se você usou o arquivo EBCDIC de amostra, o resultado é o seguinte.
Para avaliar a equivalência entre os arquivos de origem e de destino, é necessário um conhecimento abrangente do EBCDIC. Por exemplo, o primeiro caractere do arquivo EBCDIC de amostra é um hífen ( | AWS geral, Linux, EBCDIC |
Recursos relacionados
Referências
O conjunto de caracteres EBCDIC
(documentação da IBM) EBCDIC para ASCII
(documentação da IBM) COBOL
(documentação da IBM) Conceitos básicos de JCL
(documentação da IBM) Conectar-se à instância do Linux (documentação do Amazon EC2)
Tutoriais
Agendamento de trabalhos SSH usando o AWS Lambda
(publicação no blog da AWS) Uso de um acionador do Amazon S3 para invocar uma função do Lambda (documentação do AWS Lambda)