Para melhor visualização, recomendo resolução de no mínimo 1280 x 800 e navegador Mozilla Firefox


sábado, 2 de fevereiro de 2013

Gerando o modelo e o dicionário de dados com o SchemaSpy

Por Eduardo Legatti


Olá,

Imagine um cenário onde você como DBA tenha a tarefa de realizar a engenharia reversa de um schema de banco de dados (um DER com mais de 500 tabelas e seus relacionamentos) e gerar uma documentação para enviar para algum parceiro. Quais opções você teria para gerar e enviar esta documentação (DER e dicionário e dados)? Bom, após escolher uma ferramenta case que fizesse a engenharia reversa do banco de dados, uma opção seria enviar o arquivo proprietário gerado pela ferramenta de modelagem utilizada e pedir para o parceiro instalar o mesmo software de forma a poder abrir o arquivo. Uma outra opção seria enviar uma documentação gerada pela ferramenta case em um dos formatos (.doc, .html, .pdf). O problema de enviar uma documentação no formato (.doc, .pdf) é a legibilidade do modelo de dados. Seria muito difícil ter uma visão do modelo de dados em várias páginas de um documento. Na minha humilde opinião, a melhor opção seria enviar a documentação no formato HTML. O motivo disso é porque o modelo de dados e o dicionário de dados (tabelas, colunas, relacionamentos) poderia ser visualizado com links através de abas proporcionadas pelo browser. Dentre algumas das ferramentas cases de modelagem de dados mais conhecidas hoje no mercado, podemos citar o Enterprise Architect, PowerDesigner, ERwin, Toad Data Modeler, SQL Developer Data Modeler entre outras, a maioria delas gera uma documentação no formato HTML, no entanto, pelo que vi em algumas ferramentas, o modelo de dados (DER) gerado é uma imagem. Neste caso, a visualização e a navegabilidade pelo DER se tornaria difícil e penosa.

Para resolver esse problema, recomendo a utilização do SchemaSpy que é uma ferramenta gratuita baseada em Java (requer Java 5 ou superior) que analisa os metadados de um esquema em um banco de dados e gera uma representação visual em um formato legível pelo browser. Ele utiliza um programa chamado Graphviz para gerar as representações gráficas dos relacionamentos das tabelas. Vale a pena salientar que ele permite que você clique através da hierarquia das tabelas através dos relacionamentos existentes entre as mesmas. O SchemaSpy possui suporte para vários bancos e utiliza o JDBC para extrair as informações do banco de dados.

Bom, neste artigo irei mostrar como utilizar o SchemaSpy (linha de comando). Como exemplo, utilizarei o schema HR (Human Resources) disponível no banco de dados Oracle XE. Será necessário realizar o download do SchemaSpy e também baixar e instalar o Graphviz.

Bom, após a realização das tarefas acima, irei criar o diretório schemaSpy e copiar para dentro dele o arquivo schemaSpy.jar e o driver ojdbc14.jar para conexão com o banco de dados Oracle. Criarei também um subdiretório output que será o destino dos arquivos gerados pelo SchemaSpy.

 
Neste momento já poderemos executar o schemaSpy como demonstrado abaixo:

C:\schemaSpy>java -jar schemaSpy.jar
   -dp "C:\schemaSpy\ojdbc14.jar"
   -t orathin -db XE
   -host localhost
   -port 1521
   -u HR
   -p PASSWD123
   -o "E:\schemaSpy\output"
   -norows
   -hq
Using database properties:
  [schemaSpy.jar]/net/sourceforge/schemaspy/dbTypes/orathin.properties
Gathering schema details...........(10sec)
Writing/graphing summary..............(1sec)
Writing/diagramming details........(2sec)
Wrote relationship details of 8 tables/views to directory 'C:\schemaSpy\output' in 13 sec.
View the results by opening C:\schemaSpy\output\index.html

Após a execução acima, podemos verificar no diretório output que os arquivos que compõem a documentação foi gerada com sucesso.


Agora, basta clicar no arquivo index.html para visualizar não só o modelo de dados (DER), como também o dicionário de dados.






Para quem quiser utilizar uma interface gráfica, também existe o SchemaSpyGUI.



Nenhum comentário:

Postagens populares