DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!

artigo SQL Magazine 11 - Um tradutor de Triggers

Artigo da Revista SQL Magazine -Edição 11.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

imagem_pdf.jpg

capnet43.jpg

Clique aqui para ler todos os artigos desta edição

Um Tradutor de Triggers

 

Há diversos motivos para que se queira portar triggers entre bancos de dados diferentes. Um motivo comum hoje em dia são as políticas de consolidação, centralização, ou padronização de SGBDs, em curso em diversas empresas e que impõem a migração de um sistema feito em um BD para outro. Embora a migração do esquema e dos dados possa oferecer alguma dificuldade por conta dos tipos de campos e restrições de integridade, já existem ferramentas que auxiliam esta atividade, como por exemplo o IBDataPump (www.clevercomponents.com). No entanto, a migração dos triggers é quase sempre realizada de forma manual, sendo uma tarefa custosa e principalmente entediante, propensa portanto à introdução de bugs. Se este passo for automatizado, o custo de migração pode ser reduzido e, principalmente, a qualidade melhorada. Outras motivações para a migração são a atualização de aplicações que usam SGBDs que caíram em desuso, ou cujas licenças se tornaram muito caras, ou ainda a migração para software livre.

Neste artigo apresentaremos uma solução automatizada para um problema muito comum na área de banco de dados: portar triggers entre sistemas gerenciadores de bancos de dados (SGBD). Mais precisamente, iremos mostrar como construir um programa tradutor que reescreva na linguagem do Firebird 1.5 (PSQL) triggers originalmente escritos em PL/SQL Oracle. A técnica a ser utilizada é a mesma empregada na construção de compiladores, e pode ser facilmente adaptada para outros SGBDs. No entanto, é exigido que o programador tenha um mínimo de conhecimentos teóricos sobre construção de compiladores (normalmente ensinado em qualquer curso de graduação em informática). Faremos um breve apanhado da teoria necessária, mostrando o uso das ferramentas mais comuns disponíveis: o lex e o yacc.

 

Lex e Yacc

O processo de um compilador ou interpretador de uma linguagem de programação é geralmente decomposto em 2 tarefas:

 

1) Ler o programa fonte e descobrir sua estrutura;

2) Processar sua estrutura para gerar o programa final.

 

O Lex e o Yacc podem ajudar na primeira tarefa que pode ser subdividida em mais 2 partes:

 

1) Dividir o código em tokens (função do Lex);

2) Descobrir a hierarquia da estrutura do programa (Yacc).

 

Lex e yacc são dois programas de linha de comando disponíveis em quase todas as distribuições do Unix e do Linux. O lex deve ser chamado recebendo como entrada um parâmetro que é o nome do arquivo contendo os comandos a serem processados. Por exemplo:

 

$bash> lex entrada.l

 

         A saída do lex será um programa em C (lex.yy.c) contendo rotinas que serão chamadas pelo nosso compilador.

         O yacc deve ser chamado recebendo como parâmetro o nome do arquivo que contém as regras de tradução para o nosso compilador, e produz como saída o código source do compilador (y.tab.c). Esse código fonte contém chamadas para as funções geradas pelo lex no arquivo lex.yy.c (dessa forma, um include é usado para referenciar o arquivo lex.yy.c). Depois basta usar o gcc para compilar o arquivo y.tab.c e assim gerar o executável do nosso compilador.

         O programa compilado gerado pelo yacc é um executável que lê um arquivo na entrada padrão e, através das regras de tradução especificadas, produz o arquivo compilado, ou seja, o código traduzido, na saída padrão.

 

"

A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Geraldo Zimbrão
sem curriculo
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03