Database Refactoring PostgreSQL Urcamp Alegrete 2009

935 views

Published on

Palestra sobre Database Refactoring para os Alunos do Curso de Informática da URCAMP (Universidade da Região da Campanha) de Alegrete/RS

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
935
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Database Refactoring PostgreSQL Urcamp Alegrete 2009

  1. 1. Database Refactoring com PostgreSQL Fabrízio de Royes Mello fabrizio@dbseller.com.br www.dbseller.com.br
  2. 2. Apresentação Fabrízio de Royes Mello (fabrizio@dbseller.com.br) Gerente de Tecnologia Bacharel em Informática pela URCAMP Experiência Profissional 5 anos como Gerente de CPD Prefeitura DBSeller desde 2005 Desenvolvimento de Software desde 1993 Experiência em PostgreSQL desde 1999 Experiência em PHP desde 2002 www.dbseller.com.br
  3. 3. Changelog 25/04/2009 – Porto Alegre AgileWeekend 2009 http://agileweekend.guma-rs.org/ 08/05/2009 – PGDay RS http://www.postgresql.org.br/eventos/pgday/rs 30/06/2009 – URCAMP Alegrete/RS http://www.urcamp.tche.br www.dbseller.com.br
  4. 4. Agenda Objetivo Problema e Solução (Abordagem Tradicional e Ágil) Refactoring e Database Refactoring Dificuldades na Aplicação! Processo de Database Refactoring Catálogo de Refactorings (60 + 5) Colocando a Mão na Massa! Considerações Finais www.dbseller.com.br
  5. 5. Objetivo Apresentar os conceitos de Refactoring bem como sua aplicação em Banco de Dados, o chamado Database Refactoring, abordando o Catálogo de Refactorings com suas definições, categorias e exemplos práticos. www.dbseller.com.br
  6. 6. Agenda Objetivo Problema e Solução (Abordagem Tradicional e Ágil) Refactoring e Database Refactoring Dificuldades na Aplicação! Processo de Database Refactoring Catálogo de Refactorings (60 + 5) Colocando a Mão na Massa! Considerações Finais www.dbseller.com.br
  7. 7. Problema Abordagem Tradicional Análise... Análise... Análise... (tem fim?) Schema da Base está disponível mais cedo e é isso que as pessoas irão utilizar Com isso temos o DBA mais feliz!!! www.dbseller.com.br
  8. 8. Abordagem Tradicional Modelo Cascata (Waterfall) Planejamento, Análise, Modelagem (Vários Meses) Tabela Tabela Tabela Tabela Tabela Desenvolvimento Tabela (Vários Meses ou Anos) Tabela Tabela Tabela Tabela Testes (Dias) Tabela Tabela Tabela Tabela Entrega Tabela Tabela Precisa Alterar o Tabela Tabela Modelo e agora? Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com www.dbseller.com.br
  9. 9. Solução? Abordagem Ágil Processo Iterativo e Incremental Feedback Rápido Constante Inspeção e Adaptação DBA deve rever seus conceitos!!! (Agile DBA) www.dbseller.com.br
  10. 10. Abordagem Ágil Solução Iterativa e Incremental Iteração 01 Iteração 02 Idéia (2 a 4 semanas) (2 a 4 semanas) Software Software Abrangente (Planejamento, Modelagem, (Planejamento, Modelagem, Desenvolvimento, Testes) Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Iteração 03 Iteração 04 (2 a 4 semanas) Software (2 a 4 semanas) Software (Planejamento, Modelagem, (Planejamento, Modelagem, Desenvolvimento, Testes) Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com www.dbseller.com.br
  11. 11. Agenda Objetivo Problema e Solução (Abordagem Tradicional e Ágil) Refactoring e Database Refactoring Dificuldades na Aplicação Processo de Database Refactoring Catálogo de Refactorings (60 + 5) Colocando a Mão na Massa! Considerações Finais www.dbseller.com.br
  12. 12. Refactoring ”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) www.dbseller.com.br
  13. 13. Database 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ântica.” (Scott W. Ambler 2006) www.dbseller.com.br
  14. 14. Database Refactoring Mudança disciplinada na estrutura de uma base de dados que não modifica sua semântica, porém melhora seu projeto e minimiza a introdução de dados inconsistentes. (Fabrízio de Royes Mello 2009) www.dbseller.com.br
  15. 15. Agenda Objetivo Problema e Solução (Abordagem Tradicional e Ágil) Refactoring e Database Refactoring Dificuldades na Aplicação Processo de Database Refactoring Catálogo de Refactorings (60 + 5) Colocando a Mão na Massa! Considerações Finais www.dbseller.com.br
  16. 16. Dificuldades na aplicação Database Refactoring é mais difícil que Code Refactorings porque além de manter o comportamento também deve manter as informações Acoplamento [1] pode ser um complicador dependendo da sua arquitetura de banco de dados [1] Acoplamento é a medida de dependência entre dois elementos. Quanto mais acoplados dois elementos estiverem, maior a chance que a mudança em um implique na mudança do outro. www.dbseller.com.br
  17. 17. Single-Database Application Sua Melhor Caso Aplicação Baixo Acoplamento Seu Banco de Dados www.dbseller.com.br
  18. 18. Multi-Application Database Outras Aplicações Sua Outras Aplicações que Você Conhece Aplicação que Você NÃO Conhece Frameworks de Seu Outros Persistência Banco de Banco de Dados Dados Arquivos Códigos de Dados de Testes Pior Caso Alto Acoplamento www.dbseller.com.br
  19. 19. Agenda Objetivo Problema e Solução (Abordagem Tradicional e Ágil) Refactoring e Database Refactoring Dificuldades na Aplicação Processo de Database Refactoring Catálogo de Refactorings (60 + 5) Colocando a Mão na Massa! Considerações Finais www.dbseller.com.br
  20. 20. Processo de Refatoração Existe necessidade de refatorar? Escolher o refactoring mais apropriado Depreciar o esquema original Testar antes, durante e após Modificar o esquema Migrar os dados Modificar código externo Executar testes de regressão Versionar seu trabalho Anunciar o refactoring www.dbseller.com.br
  21. 21. Processo de Refatoração Regra Geral Período de Transição Esquema (Backups, Criação de Campos, Esquema Original Cópias de Dados, Resultante Remoção campos antigos, etc) Aplicação do Refactoring Apropriado Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com www.dbseller.com.br
  22. 22. Agenda Objetivo Problema e Solução (Abordagem Tradicional e Ágil) Refactoring e Database Refactoring Dificuldades na Aplicação Processo de Database Refactoring Catálogo de Refactorings (60 + 5) Colocando a Mão na Massa! Considerações Finais www.dbseller.com.br
  23. 23. Structural (17) Drop Column Drop Table São mudanças na estrutura Drop View do banco de dados Introduce Calculated Column (tabelas, colunas, visões) 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 www.dbseller.com.br
  24. 24. Data Quality (13) Add Lookup Table Apply Standard Codes São mudanças que melhoram Apply Standard Type a qualidade das informações Consolidate Key Strategy contidas em um banco de dados 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 www.dbseller.com.br
  25. 25. 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 São mudanças que asseguram que uma linha referenciada exista em outra e/ou assegura que uma linha que não é mais necessária seja removida apropriadamente www.dbseller.com.br
  26. 26. Architectural (12) Add CRUD Methods São mudanças que melhoram Add Mirror Table a maneira que programas Add Read Method externos interagem com Encapsulate Table With View a base de dados 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 www.dbseller.com.br
  27. 27. 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 São mudanças que melhoram a qualidade de uma Procedure ou Função www.dbseller.com.br
  28. 28. Transformations (5) Insert Data Mudanças que alteram a semântica Introduce New Column do esquema do banco pela adição Introduce New Table de novas funcionalidades Introduce New View Update Data www.dbseller.com.br
  29. 29. Agenda Objetivo Problema e Solução (Abordagem Tradicional e Ágil) Refactoring e Database Refactoring Dificuldades na Aplicação Processo de Database Refactoring Catálogo de Refactorings (60 + 5) Colocando a Mão na Massa! Considerações Finais www.dbseller.com.br
  30. 30. Demonstrar Exemplos práticos! www.dbseller.com.br
  31. 31. Agenda Objetivo Problema e Solução (Abordagem Tradicional e Ágil) Refactoring e Database Refactoring Dificuldades na Aplicação Processo de Database Refactoring Catálogo de Refactorings (60 + 5) Colocando a Mão na Massa! Considerações Finais www.dbseller.com.br
  32. 32. Por quê Refatorar? Aceitar mudança de escopo Fornecer feedback rápido Melhoria contínua Aumentar a simplicidade para facilitar entendimento Tornar modelos mais próximos do mundo real Ter modelos simples para facilitar Manutenção e Evolução da aplicação Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com www.dbseller.com.br
  33. 33. Para refatorar algo Conhecimento Disciplina Simplicidade Bom senso Persistência www.dbseller.com.br
  34. 34. Algumas Referências! 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 http://www.postgresql.org www.dbseller.com.br
  35. 35. Dúvidas/Críticas/Sugestões!!! Fabrízio de Royes Mello fabrizio@dbseller.com.br www.dbseller.com.br

×