Tutorial Database Refactoring

18

Click here to load reader

description

Tutorial de Database Refactoring realizado no Agile Brazil 2014. Links: [1] http://github.com/fabriziomello/database_refactoring [2]

Transcript of Tutorial Database Refactoring

Page 1: Tutorial Database Refactoring

Database RefactoringDatabase Refactoring

@fabriziomello @guilhermeslac

Page 2: Tutorial Database Refactoring

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

Page 3: Tutorial Database Refactoring

AgendaAgenda●Database Refactoring

●Problema

●Considerações Finais

Page 4: Tutorial Database Refactoring

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)

Page 5: Tutorial Database Refactoring

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)

Page 6: Tutorial Database Refactoring

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)

Page 7: Tutorial Database Refactoring

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, ...)

Page 8: Tutorial Database Refactoring

Single-Database Applicat ionSingle-Database Applicat ion

SuaAplicação

Seu Banco de Dados

Page 9: Tutorial Database Refactoring

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

Page 10: Tutorial Database Refactoring

Ciclo de vidaCiclo de vida

Page 11: Tutorial Database Refactoring

Modelo InicialModelo Inicial

Page 12: Tutorial Database Refactoring

Modelo Resul tanteModelo Resul tante

Page 13: Tutorial Database Refactoring

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

Page 14: Tutorial Database Refactoring

Mão-na-massaMão-na-massa

Page 15: Tutorial Database Refactoring

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

Page 16: Tutorial Database Refactoring
Page 17: Tutorial Database Refactoring

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/

Page 18: Tutorial 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 !