DDaattaabbaassee RReeffaaccttoorriinngg @fabriziomello @guilhermeslac
QQuueemm ssoommooss?? 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
AAggeennddaa ●Database Refactoring ●Problema ●Considerações Finais
RReeffaaccttoorriinngg ”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)
DDaattaabbaassee RReeffaaccttoorriinngg “É 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)
DDaattaabbaassee RReeffaaccttoorriinngg “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 ddee BBaannccoo ddee DDaaddooss 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-DDaattaabbaassee AApppplliiccaattiioonn Sua Aplicação Seu Banco de Dados
Multi-AApppplliiccaattiioonn DDaattaabbaassee Sua Aplicação Seu Banco de Dados Outras Aplicações que Você NÃO Conhece Outros Banco de Dados Outras Aplicações que Você Conhece Outras Aplicações que Você Conhece Frameworks de Persistência Outras Aplicações que Você NÃO Conhece Arquivos de Dados Códigos de Testes
CCiicclloo ddee vviiddaa
MMooddeelloo IInniicciiaall
MMooddeelloo RReessuullttaannttee
RReeffaattoorraaççõõeess ● 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
MMããoo--nnaa--mmaassssaa
CCoonnssiiddeerraaççõõeess ffiinnaaiiss ● 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
RReeffeerrêênncciiaass ●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/
MMuuiittoo Obbrriiggaaddoo!! g u i l h e r me s l a c e rd a@g m 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@g m a i l . c o m @f a b r i z i o me l l o w w w . c o d i n g b y e x a m p l e . o rg w w w . o rg a n i z a c a o v i s u a l . n e t

Tutorial Database Refactoring

  • 1.
  • 2.
    QQuueemm ssoommooss?? FabrízioMello ● 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
  • 3.
    AAggeennddaa ●Database Refactoring ●Problema ●Considerações Finais
  • 4.
    RReeffaaccttoorriinngg ”Processo dealteraçã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)
  • 5.
    DDaattaabbaassee RReeffaaccttoorriinngg “É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)
  • 6.
    DDaattaabbaassee RReeffaaccttoorriinngg “Mudançadisciplinada 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)
  • 7.
    Refatoração ddee BBaannccooddee DDaaddooss 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, ...)
  • 8.
  • 9.
    Multi-AApppplliiccaattiioonn DDaattaabbaassee Sua Aplicação Seu Banco de Dados Outras Aplicações que Você NÃO Conhece Outros Banco de Dados Outras Aplicações que Você Conhece Outras Aplicações que Você Conhece Frameworks de Persistência Outras Aplicações que Você NÃO Conhece Arquivos de Dados Códigos de Testes
  • 10.
  • 11.
  • 12.
  • 13.
    RReeffaattoorraaççõõeess ● Adicionarrestriçã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
  • 14.
  • 15.
    CCoonnssiiddeerraaççõõeess ffiinnaaiiss ●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
  • 17.
    RReeffeerrêênncciiaass ●Refactoring Improvingthe 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/
  • 18.
    MMuuiittoo Obbrriiggaaddoo!! gu i l h e r me s l a c e rd a@g m 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@g m a i l . c o m @f a b r i z i o me l l o w w w . c o d i n g b y e x a m p l e . o rg w w w . o rg a n i z a c a o v i s u a l . n e t