Mapeamento de bases de dados com tratamento de exceções

Processos empresariais críticos dependem de dados fiáveis, e os administradores de bases de dados, bem como outros analistas de dados, precisam ter a certeza da integridade das informações armazenadas nas tabelas de bases de dados. Durante operações automatizadas de ETL (Extração, Transformação e Carregamento) ou outras tarefas de importação de bases de dados, podem ser encontrados dados inválidos que comprometem o sucesso do processo. O Altova MapForce inclui mecanismos de tratamento de exceções de bases de dados para reverter os dados afetados quando ocorre um erro, e permite, opcionalmente, continuar com o restante do mapeamento da base de dados.

Por exemplo, um erro num único registo não precisa de impedir a continuação da execução de um mapeamento, como acontece quando certas restrições de base de dados impedem que o mapeamento insira ou atualize dados inválidos.

A ativação do tratamento de exceções no nível do banco de dados envolve a inclusão de todas as alterações no componente do banco de dados dentro de transações que podem ser revertidas em caso de erro. Os utilizadores podem optar por continuar com o restante do processo ou interromper a execução. As transações podem ser ativadas a nível do componente do banco de dados, a nível da tabela ou para procedimentos armazenados.

O tratamento de exceções pode ser combinado com a registação (monitorização) da saída da base de dados para criar um registo dos erros que ocorrem durante o processamento automatizado.

Vamos ver como funciona.

A pasta de exemplos do MapForce inclui um mapeamento de base de dados e uma base de dados SQLite que ilustram o tratamento de transações e a reversão de operações. Naturalmente, estas funcionalidades são suportadas para todas as bases de dados relacionais populares, para tarefas comuns como a conversão de PostgreSQL para SQLite, o mapeamento de XML para um SQL Server, a conversão de JSON para Access, e assim por diante.

Esta correspondência copia dados de duas tabelas de base de dados para novas tabelas com uma estrutura semelhante, exceto por uma diferença importante. Na tabela "new_addresses" da base de dados de destino, os campos "is_shipping" e "is_billing" não podem conter valores nulos, enquanto que, na tabela "addresses" da base de dados de origem, esses campos podiam conter valores nulos. Isso significa que ocorrerão erros durante a execução da correspondência se forem encontrados valores ausentes.

Vamos analisar três situações, utilizando as opções de tratamento de exceções de bases de dados para gerir erros de diferentes formas

  • No primeiro erro, reverta todas as alterações e interrompa a execução do processo

  • Desfaça apenas a transação que gerou o erro e continue

  • Desfazer a última transação e continuar

Desfazer todas as alterações

Na primeira situação, pretendemos aplicar o tratamento de exceções no nível do banco de dados para garantir que o banco de dados de destino permaneça completamente inalterado caso ocorra algum erro durante a execução da mapeamento. Para implementar esta opção, podemos abrir a caixa de diálogo de propriedades do componente do banco de dados de destino e ativar o tratamento de transações:

Agora, podemos executar a configuração clicando no botão "Saída" na parte inferior do painel de configuração para gerar o script de execução SQL. Em seguida, selecione a opção "Executar script SQL" no menu "Saída" que se encontra acima da janela do script

Quando ocorre o primeiro erro durante a execução, é exibida uma janela de diálogo que nos permite confirmar ou alterar as configurações da transação que escolhemos anteriormente

Simplesmente clicaremos em "OK" para confirmar as configurações originais. A execução da mapeação é interrompida e a janela de mensagens descreve o erro:

Podemos usar a janela de consulta de base de dados integrada do MapForce para selecionar e examinar as tabelas "new_users" e "new_addresses". Esperamos que ambas estejam vazias:

Isto confirma que quaisquer dados inseridos antes do erro foram revertidos, ou seja, removidos da base de dados.

Durante a execução automatizada, sob o controlo do MapForce Server, as configurações de transação do componente seriam utilizadas sem qualquer interrupção.

Desfazer a última transação e continuar

Imagine um cenário em que um ficheiro de dados externo muito grande precisa de ser importado para uma base de dados, digamos, dez mil registos ou mais. Esperamos que o ficheiro externo seja válido, mas, caso alguns registos contenham dados incorretos, queremos importar todos os registos válidos e documentar os erros. Esta é uma situação de tratamento de exceções na base de dados, correspondente ao cenário 2 da lista acima, combinada com o rastreamento da base de dados descrito numa publicação anterior.

Para implementar esta opção de tratamento de exceções para a tabela "new_addresses", clicamos no botão de ações da tabela e selecionamos as seguintes propriedades:

Agora podemos gerar um novo script SQL e executá-lo utilizando o mesmo comando "Executar script SQL" mostrado acima. A janela "Mensagens" irá registar vários erros. Podemos executar novamente a consulta SQL na janela "Consulta de Base de Dados" para visualizar os dados que foram mapeados com sucesso:

Além disso, gerámos um ficheiro de rastreio em formato XML. A imagem abaixo mostra uma visão parcial na janela do editor XML do programa XMLSpy XML, referente a um erro específico, destacado na linha 54:

Um ficheiro de registo como este facilita a identificação e correção de alguns registos incorretos entre dez mil!

Desfazer a última transação e continuar

A situação 3 no tratamento de exceções da base de dados satisfaz este requisito empresarial: se a inserção de um endereço falhar, o registo do utilizador correspondente também não deve ser inserido, mas o restante do processo de mapeamento deve continuar.

Este exemplo é descrito em detalhe na ajuda online do MapForce, que é instalada automaticamente com o programa, e em todos os ficheiros de demonstração apresentados aqui. Deixamos que seja o utilizador a descarregar uma versão de avaliação gratuita e a explorar esse cenário, ou que comece imediatamente a implementar o tratamento de exceções de bases de dados nas suas próprias mapeações!