Tutorial Database Refactoring
Click here to load reader
-
Upload
fabrizio-mello -
Category
Technology
-
view
233 -
download
0
description
Transcript of Tutorial Database Refactoring
Database RefactoringDatabase Refactoring
@fabriziomello @guilhermeslac
Quem somos?Quem somos?Fabrízio Mello● Desenvolvedor PostgreSQL● Líder PostgreSQL Brasil● Pós-Graduando UniiRitter (Agile)● @fabriziomello● http://fabriziomello.github.io
Guilherme Lacerda● Consultor e Professor Universitário (UniRitter, Unisinos e UFRGS)● Doutorando em Ciência da Computação (UFRGS)● @guilhermeslac● http://www.guilhermelacerda.net
AgendaAgenda●Database Refactoring
●Problema
●Considerações Finais
RefactoringRefactoring”Processo de alteração de um sistema de software de
modo que o comportamento externo do código não mude, mas que sua estrutura interna seja melhorada.”
”É uma forma disciplinada de aperfeiçoar código que minimiza a introdução de falhas.”
(Martin Fowler 2004)
Database RefactoringDatabase Refactoring
“É quando uma simples mudança no esquema de uma base de dados melhora a sua concepção (projeto), embora mantendo
simultaneamente a sua semâtica".
(Scott W. Ambler 2006)
Database RefactoringDatabase Refactoring
“Mudança disciplinada na estrutura de uma base de dados que não altera sua
semântica, porém melhora seu projeto e minimiza a introdução de dados
inconsistentes".
(Fabrízio de Royes Mello 2009)
Refatoração de Banco de Refatoração de Banco de DadosDados
Deterioração + Mudanças em Requisitos =Necessidade de Refatoração
Mas não é tão simples como parece:● além de manter comportamento também é preciso manter informação (dados)
● acoplamento com diversas origens (apps, bds, integrações, 3rd, ...)
Single-Database Applicat ionSingle-Database Applicat ion
SuaAplicação
Seu Banco de Dados
Mul t i-Applicat ion DatabaseMul t i-Applicat ion DatabaseSua
Aplicação
Seu Banco de
Dados
OutrosBanco de
Dados
Frameworks de
Persistência
Outras Aplicaçõesque Você Conhece
Outras Aplicaçõesque Você Conhece
Outras Aplicaçõesque Você NÃO
Conhece
Outras Aplicaçõesque Você NÃO
Conhece
Arquivosde Dados
Códigos de Testes
Ciclo de vidaCiclo de vida
Modelo InicialModelo Inicial
Modelo Resul tanteModelo Resul tante
RefatoraçõesRefatorações● Adicionar restrição de integridade na tabela SALES
● Na tabela “Customer” existe um campo “City” que é um VARCHAR, então precisamos separar em outra tabela, criando um período de transição
● Encerrar período de transição
Mão-na-massaMão-na-massa
Considerações finaisConsiderações finais● Melhoria continua● Aumentar simplicidade para facilitar entendimento● Tornar modelos mais próximos do mundo real● Criar modelos mais simples para facilitar:
● Manutenção e ● Evolução da aplicação
ReferênciasReferências
●Refactoring Improving the Desing of Existing Code (Martin Fowler)●Refactoring Databases: Evolutionary Database Design (Scott Ambler e Pramod Sadalage)●http://martinfowler.com/books/refactoring.html
●http://agiledata.org/essays/databaseRefactoring.html
●http://www.agiledata.org/essays/databaseRefactoringSmells.html
●http://fabriziomello.github.io/blog/2013/06/10/database-refactoring/
www . c o d i n g b y e x a m p l e . o rgw w w . o rg a n i z a c a o v i s u a l . n e t
g u i l h e r me s l a c e rd a@gm a i l . c o m@g u i l h e r me s l a c
f a b r i z i o me l l o@gm a i l . c o m@fa b r i z i o me l l o
Mui to Obr igado !Mu i to Obr igado !