DBSync4J
Uma Ferramenta para Apoio na Sincronização
entre Bases de Dados de Desenvolvimento e
Produção
Autores: Ana Carolina Ferreira Lins
Rafael Fernandes Gomes
Orientador: Fernando Macedo
Cenários
• Software em constante evolução;
• Não ter controle sobre as mudanças;
• Falta de controle nos sub-processos do desenvolvimento;
Problema a ser solucionado
• Mapear e sincronizar diferenças estruturais entre duas bases;
Objetivos
• Demonstrar diversas tecnologias de acesso e captura de
metadados estruturais de bancos de dados relacionais;
• Desenvolver uma ferramenta Open Source utilizando a
linguagem Java;
• Criar uma alternativa além das soluções proprietárias quando se
trata de um problema de falta de sincronia estrutural entre bancos
de dados de produção e desenvolvimento.
• Promover a conscientização da importância da gestão de
configuração.
Problematização
• Como sincronizar as bases de dados de um projeto já em
andamento que não possui a estrutura desejada de controle de
mudanças?
• Como minimizar o esforço para sincronizar bases em produção e
desenvolvimento?
• Como mapear as diferenças estruturais entre duas bases de
dados?
Problematização
• Como abstrair essas diferenças na estrutura em uma saída com
um formato amigável e de fácil compreensão para o
desenvolvedor?
• Que benefícios à solução proposta neste trabalho provê aos
envolvidos no projeto?
• Que custo terá a solução proposta neste trabalho?
Conceitos Importantes
• O que são metadados?
São dados sobre outros dados. Um item de um metadado pode
dizer do que se trata aquele dado.
• O que é a API JDBC?
A API JDBC é uma biblioteca Java para acesso virtual de qualquer
tipo de dados tabulares. Essa API consiste em um conjunto de
classes e interfaces escrito na linguagem de programação Java.
• O que é o Schema Crawler?
API que utiliza internamente o JDBC e efetua a captura dos
metadados dos bancos de dados relacionais.
Ferramentas Disponíveis no Mercado
Pontos
Analisados
CDBS Comparator PRO
6.0
APEXSQL Diff
SQLCompare
Descrição
Comparação de
estruturas e dados
Servidor de base
de comparação
de dados
Comparação e
sincronização de
esquemas
Bancos
Suportados
Executa comparação
entre fabricantes
diferentes
Forma de
Conexão
ODBC
Autenticação
Windows ou
SQL
SQL Client
Custo
$595
$399
Não identificado
Suporta
Somente Servidor
comparação de
SQL
dados e
estruturas de
bases SQL Server
Visão Geral DBSync4J
Visão Geral DBSync4J
• Tecnologias / Ferramentas utilizadas
•
•
•
•
•
•
Eclipse 3.3 Europa;
Plugin JUnit;
API Schema Crawler e JDBC;
API BeanDiff;
Orientação a Objeto;
Design Patterns;
• Funcionalidades
• Abstração de metadados;
• Extração de metadados;
• Comparação.
Visão Geral DBSync4J
Escopo - Dbsync4J
Schema
Tabela
Nome do Schema
Nome da Coluna
Quantidade de Tabelas
Permissão de Nulo
Nome da Tabela
Valor Default
Nome da Chave Primaria
Tamanho da Coluna
Nome da Chave Estrangeira
Tipo do Dado
Nome de Índice
Chave
Primaria
Coluna
Parte de uma Chave Primaria
Nome da Chave
Parte de uma Chave Estrangeira
Tabelas a que pertencem
Parte de um Índice
Colunas a que pertencem
Precisão
Seqüência
Unsigned
Tipo do Dado
Autoincrementavel
Página
Campo Único
Chave
Estrangeira
Nome da Chave
Tabelas / Colunas a que pertencem
Testes Unitários na Ferramenta DBsync4J
• Definição
• Teste específico para uma funcionalidade atômica de um
método dentro de uma classe;
• A importância dos testes para a Ferramenta
• Garantir que todas as entidades serão carregadas
atualizadas no Banco de Dados;
• Credibilidade / Integridade da aplicação;
• Redução considerável de erros pós - entrega ao cliente.
Testes Unitários na Ferramenta DBsync4J
Testando o carregamento do Schema...
Testes Unitários na Ferramenta DBsync4J
Testando o carregamento de Chaves Primárias / Estrangeiras...
Testes Unitários na Ferramenta DBsync4J
Schema Crawler X JDBC
O erro...Carregamento de Colunas
Testes Unitários na Ferramenta DBsync4J
Schema Crawler X JDBC
A solução...Carregamento de Colunas
Trabalhos Futuros
• Suporte a sincronização de forma transparente;
• Remoção da dependência do Schema Crawler;
• Implementação de rotinas de geração de scripts DDL;
• Melhorar suporte a internacionalização;
• Aumentar escopo suportado pela ferramenta;
Trabalhos Futuros
• Extração de metadados localmente do computador de um
desenvolvedor;
• Suportar outras bases de dados;
• Melhora na performance durante o carregamento dos
metadados;
• Criar um plugin para que a ferramenta DBsyn4J se integre com
o Eclipse;
• Criação/Persistência/Comparação de Snapshot dos metadados
estruturais da base.
Análise dos Resultados
• Motivação: conhecer profissionais que em algum momento se
depararam com problemas de comparação de bancos de dados;
• Considerações importantes:
• A comparação estrutural de banco de dados uma vez
executada manualmente é considerada uma tarefa de
grande consumo de tempo.
• Desafio alcançado: suavizar grandes diferenças entre SGBD,
pois cada um possui sua forma de lidar, armazenar e
recuperar seus metadados.
• Resultado do Trabalho: ferramenta genérica em fase funcional e
open source que realize a tarefa de comparação estrutural entre
bancos de dados como contribuição a comunidade.
Onde encontrar a Ferramenta?
http://code.google.com/p/dbsync4j/
Download

Testes Unitários na Ferramenta DBsync4J