refatoração banco de dados (agileweekend2009)
DESCRIPTION
Apresentar conceitos e práticas de Refactoring de Banco de Dados, que consiste em diversas técnicas e práticas para se aplicar melhorias em banco de dados (legados ou não), fazendo uma passagem pelo Catálogo de Database Refactorings do Sr. Scott W. Ambler e demonstrando exemplos e cenários típicos de aplicação utilizando o PostgreSQL com suas facilidades e limitações na implementação de Refactorings.TRANSCRIPT
- 1. Refatorao de Banco de Dados Fabrzio de Royes Mello [email_address]
2. Agenda
- Objetivo
- Problema e Soluo(Abordagem Tradicional e gil)
- Refactoring e Database Refactoring
- Dificuldades na Aplicao!
- Processo de Database Refactoring
- Catlogo de Refactorings (60 + 5)
- Colocando a Mo na Massa!
- Consideraes Finais
3. Objetivo
- Apresentar os conceitos deRefactoringbem como sua aplicao em Banco de Dados, o chamadoDatabase Refactoring , abordando o Catlogo de Refactorings com suas definies, categorias e exemplos prticos.
4. Agenda
- Objetivo
- Problema e Soluo(Abordagem Tradicional e gil)
- Refactoring e Database Refactoring
- Dificuldades na Aplicao!
- Processo de Database Refactoring
- Catlogo de Refactorings (60 + 5)
- Colocando a Mo na Massa!
- Consideraes Finais
5. Problema
- Abordagem Tradicional
-
- Anlise... Anlise... Anlise... (tem fim?)
-
- Schema da Base est disponvel mais cedo e isso que as pessoas iro utilizar
-
- Com isso temos o DBA mais feliz!!!
6. Modelo Cascata (Waterfall) Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com Abordagem Tradicional Desenvolvimento (Vrios Meses ou Anos) Testes(Dias) Entrega Planejamento, Anlise, Modelagem (Vrios Meses) Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Precisa Alterar oModelo e agora? 7. Soluo?
- Abordagem gil
-
- Processo Iterativo e Incremental
-
- Feedback Rpido
-
- Constante Inspeo e Adaptao
-
- DBA deve rever seus conceitos!!! (Agile DBA)
8. Abordagem gil Soluo Iterativa e Incremental Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com Idia Abrangente Iterao 01 (2 a 4 semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Software Iterao 02 (2 a 4 semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Software Tabela Tabela Tabela Tabela Iterao 03 (2 a 4 semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Software Iterao 04 (2 a 4 semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Software Tabela Tabela Tabela Tabela 9. Agenda
- Objetivo
- Problema e Soluo(Abordagem Tradicional e gil)
- Refactoring e Database Refactoring
- Dificuldades na Aplicao
- Processo de Database Refactoring
- Catlogo de Refactorings (60 + 5)
- Colocando a Mo na Massa!
- Consideraes Finais
10. Refactoring
- Processo de alterao de um sistema de software de modo que o comportamento externo do cdigo no mude, mas que sua estrutura interna seja melhorada.
- uma forma disciplinada de aperfeioar cdigo que minimiza a introduo de falhas.
- (Martin Fowler 2004)
11. Database Refactoring
- quando uma simples mudana no esquema de uma base de dados melhora a sua concepo (projeto), embora mantendo simultaneamente a sua semntica.
- (Scott W. Ambler 2006)
12. Database Refactoring
- Mudana disciplinada na estrutura de uma base de dados que no modifica sua semntica, porm melhora seu projeto e minimiza a introduo de dados inconsistentes.
- (Fabrzio de Royes Mello 2009)
13. Agenda
- Objetivo
- Problema e Soluo(Abordagem Tradicional e gil)
- Refactoring e Database Refactoring
- Dificuldades na Aplicao
- Processo de Database Refactoring
- Catlogo de Refactorings (60 + 5)
- Colocando a Mo na Massa!
- Consideraes Finais
14. Dificuldades na aplicao
- Database Refactoring mais difcil queCode Refactoringsporque alm de manter o comportamento tambm deve manter as informaes
- Acoplamento [1]pode ser um complicador dependendo da sua arquitetura de banco de dados
- [1] Acoplamento a medida de dependncia entre dois elementos. Quanto mais acoplados dois elementos estiverem, maior a chance que a mudana em um implique na mudana do outro.
15.
- Melhor Caso
- Baixo Acoplamento
Single-Database Application Sua Aplicao SeuBanco de Dados 16.
- Pior Caso
- Alto Acoplamento
Multi-Application Database Sua Aplicao SeuBanco deDados Outros Banco deDados Frameworks de Persistncia Outras Aplicaes que Voc Conhece Outras Aplicaes que Voc NO Conhece Arquivos de Dados Cdigosde Testes 17. Agenda
- Objetivo
- Problema e Soluo(Abordagem Tradicional e gil)
- Refactoring e Database Refactoring
- Dificuldades na Aplicao
- Processo de Database Refactoring
- Catlogo de Refactorings (60 + 5)
- Colocando a Mo na Massa!
- Consideraes Finais
18. Processo de Refatorao
- Existe necessidade de refatorar?
- Escolher o refactoring mais apropriado
- Depreciar o esquema original
- Testar antes, durante e aps
- Modificar o esquema
- Migrar os dados
- Modificar cdigo externo
- Executar testes de regresso
- Versionar seu trabalho
- Anunciar o refactoring
19. Processo de Refatorao Regra Geral Aplicao do Refactoring Apropriado Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com EsquemaOriginal Perodo de Transio (Backups, Criao de Campos,Cpias de Dados, Remoo campos antigos, etc) EsquemaResultante 20. Agenda
- Objetivo
- Problema e Soluo(Abordagem Tradicional e gil)
- Refactoring e Database Refactoring
- Dificuldades na Aplicao
- Processo de Database Refactoring
- Catlogo de Refactorings (60 + 5)
- Colocando a Mo na Massa!
- Consideraes Finais
21. Structural (17)
- Drop Column
- Drop Table
- Drop View
- Introduce Calculated Column
- Introduce Surrogate Key
- Merge Columns
- Merge Tables
- Move Column
- Rename Column
- Rename Table
- Rename View
- Replace LOB With Table
- Replace Column
- Replace One-To-Many With Associative Table
- Replace Surrogate Key With Natural Key
- Split Column
- Split Table
So mudanas na estruturado banco de dados (tabelas, colunas, vises) 22. Data Quality (13)
- Add Lookup Table
- Apply Standard Codes
- Apply Standard Type
- Consolidate Key Strategy
- Drop Column Constraint
- Drop Default Value
- Drop Non-Nullable
- Introduce Column Constraint
- Introduce Common Format
- Introduce Default Value
- Make Column Non-Nullable
- Move Data
- Replace Type Code With Property Flags
So mudanas que melhorama qualidade das informaescontidas em um banco de dados 23. Referential Integrity (7)
- Add Foreign Key Constraint
- Add Trigger For Calculated Column
- Drop Foreign Key Constraint
- Introduce Cascading Delete
- Introduce Hard Delete
- Introduce Soft Delete
- Introduce Trigger For History
So mudanas que asseguram queuma linha referenciada exista emoutra e/ou assegura que uma linhaque no mais necessria sejaremovida apropriadamente 24. Architectural (12)
- Add CRUD Methods
- Add Mirror Table
- Add Read Method
- Encapsulate Table With View
- Introduce Calculation Method
- Introduce Index
- Introduce Read-Only Table
- Migrate Method From Database
- Migrate Method To Database
- Replace Method(s) With View
- Replace View With Method(s)
- Use Official Data Source
So mudanas que melhorama maneira que programasexternos interagem coma base de dados 25. Method (11)
- Interface Changing Refactorings
-
- Add Parameter
-
- Parameterize Method
-
- Remove Parameter
-
- Rename Method
-
- Reorder Parameters
-
- Replace Parameter with Explicit Methods
- Internal Refactorings
-
- Consolidate Conditional Expression
-
- Decompose Conditional
-
- Extract Method
-
- Introduce Variable
-
- Remove Control Flag
So mudanas que melhorama qualidade de umaProcedure ou Funo 26. Transformations (5)
- Insert Data
- Introduce New Column
- Introduce New Table
- Introduce New View
- Update Data
Mudanas que alteram a semnticado esquema do banco pela adiode novas funcionalidades 27. Agenda
- Objetivo
- Problema e Soluo(Abordagem Tradicional e gil)
- Refactoring e Database Refactoring
- Dificuldades na Aplicao
- Processo de Database Refactoring
- Catlogo de Refactorings (60 + 5)
- Colocando a Mo na Massa!
- Consideraes Finais
28. Demonstrar Exemplos prticos! 29. Agenda
- Objetivo
- Problema e Soluo(Abordagem Tradicional e gil)
- Refactoring e Database Refactoring
- Dificuldades na Aplicao
- Processo de Database Refactoring
- Catlogo de Refactorings (60 + 5)
- Colocando a Mo na Massa!
- Consideraes Finais
30. Por qu Refatorar?
- Aceitar mudana de escopo
- Fornecer feedback rpido
- Melhoria contnua
- Aumentar a simplicidade para facilitar entendimento
- Tornar modelos mais prximos do mundo real
- Ter modelos simples para facilitar
-
- Manuteno e
-
- Evoluo da aplicao
Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com 31. Para refatorar algo
- Conhecimento
- Disciplina
- Simplicidade
- Bom senso
- Persistncia
32. Algumas Referncias!
- Livros:
-
- Refactoring Databases (Scott W. Ambler e Pramod J. Sadalage)
-
- Refactoring (Martin Fowler)
-
- Agile Modeling (Scott W. Ambler)
- Sites:
-
- http://www.agiledata.org
-
- http://www.databaserefactoring.org
-
- http://visaoagil.wordpress.com
-
- http://www.refactoring.com
33. Dvidas/Crticas/Sugestes!!! Fabrzio de Royes Mello [email_address]