database refactoring postgresql urcamp alegrete 2009

Download Database Refactoring PostgreSQL Urcamp Alegrete 2009

If you can't read please download the document

Upload: fabrizio-mello

Post on 25-May-2015

768 views

Category:

Technology


4 download

DESCRIPTION

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

TRANSCRIPT

2. ApresentaoFabrzio de Royes Mello ([email protected]) Gerente de Tecnologia Bacharel em Informtica pela URCAMP Experincia Profissional5 anos como Gerente de CPD PrefeituraDBSeller desde 2005Desenvolvimento de Software desde 1993Experincia em PostgreSQL desde 1999Experincia em PHP desde 2002www.dbseller.com.br 3. Changelog25/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. AgendaObjetivo 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 www.dbseller.com.br 5. ObjetivoApresentar os conceitos de Refactoring bemcomo sua aplicao em Banco de Dados, o chamado Database Refactoring, abordando o Catlogo de Refactorings com suas definies,categorias e exemplos prticos.www.dbseller.com.br 6. AgendaObjetivo 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 www.dbseller.com.br 7. ProblemaAbordagem 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!!! www.dbseller.com.br 8. Abordagem Tradicional Modelo Cascata (Waterfall) Planejamento, Anlise, Modelagem (Vrios Meses) Tabela TabelaTabela Tabela Tabela DesenvolvimentoTabela (Vrios Meses ou Anos) Tabela TabelaTabela TabelaTestes (Dias) Tabela TabelaTabela Tabela EntregaTabela Tabela Precisa Alterar o Tabela Tabela Modelo e agora?Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.comwww.dbseller.com.br 9. Soluo?Abordagem gil Processo Iterativo e Incremental Feedback Rpido Constante Inspeo e Adaptao DBA deve rever seus conceitos!!! (Agile DBA)www.dbseller.com.br 10. Abordagem gil Soluo Iterativa e IncrementalIterao 01 Iterao 02 Idia(2 a 4 semanas) (2 a 4 semanas) SoftwareSoftwareAbrangente(Planejamento, Modelagem, (Planejamento, Modelagem, Desenvolvimento, Testes)Desenvolvimento, Testes)Tabela Tabela Tabela Tabela TabelaTabela TabelaTabela Iterao 03 Iterao 04(2 a 4 semanas)Software (2 a 4 semanas)Software(Planejamento, Modelagem, (Planejamento, Modelagem, Desenvolvimento, Testes)Desenvolvimento, Testes)Tabela Tabela Tabela Tabela TabelaTabela TabelaTabelaFonte: Manoel Pimental Medeiros - visaoagil.wordpress.comwww.dbseller.com.br 11. AgendaObjetivo 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 www.dbseller.com.br 12. Refactoring Processo de alterao de um sistema de software de modo que o comportamentoexterno do cdigo no mude, mas que suaestrutura interna seja melhorada. uma forma disciplinada de aperfeioar cdigoque minimiza a introduo de falhas.(Martin Fowler 2004) www.dbseller.com.br 13. Database Refactoring quando uma simples mudana no esquemade uma base de dados melhora a sua concepo (projeto), embora mantendo simultaneamente a sua semntica.(Scott W. Ambler 2006) www.dbseller.com.br 14. Database RefactoringMudana disciplinada na estrutura de uma base de dados que no modifica sua semntica,porm melhora seu projeto e minimiza aintroduo de dados inconsistentes.(Fabrzio de Royes Mello 2009) www.dbseller.com.br 15. AgendaObjetivo 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 www.dbseller.com.br 16. Dificuldades na aplicaoDatabase Refactoring mais difcil que Code Refactorings porque 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. www.dbseller.com.br 17. Single-Database ApplicationSuaMelhor Caso AplicaoBaixo AcoplamentoSeu Banco de Dados www.dbseller.com.br 18. Multi-Application DatabaseOutras Aplicaes Sua Outras Aplicaes que Voc ConheceAplicaoque Voc NO Conhece Frameworks de Seu OutrosPersistncia Banco de Banco deDadosDadosArquivos Cdigos de Dados de TestesPior Caso Alto Acoplamentowww.dbseller.com.br 19. AgendaObjetivo 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 www.dbseller.com.br 20. 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 refactoringwww.dbseller.com.br 21. Processo de RefatoraoRegra GeralPerodo de TransioEsquema (Backups, Criao de Campos,Esquema Original Cpias de Dados,Resultante Remoo campos antigos, etc)Aplicao do Refactoring Apropriado Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.comwww.dbseller.com.br 22. AgendaObjetivo 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 www.dbseller.com.br 23. Structural (17)Drop Column Drop Table So mudanas na estrutura Drop View do banco de dados Introduce Calculated Column(tabelas, colunas, vises) 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 Tablewww.dbseller.com.br 24. Data Quality (13)Add Lookup Table Apply Standard CodesSo mudanas que melhoram Apply Standard Type a qualidade das informaes Consolidate Key Strategycontidas 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 Flagswww.dbseller.com.br 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 So mudanas que asseguram queuma linha referenciada exista em outra e/ou assegura que uma linha que no mais necessria seja removida apropriadamentewww.dbseller.com.br 26. Architectural (12)Add CRUD Methods So mudanas 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 Sourcewww.dbseller.com.br 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 FlagSo mudanas que melhoram a qualidade de umaProcedure ou Funowww.dbseller.com.br 28. Transformations (5)Insert DataMudanas que alteram a semntica Introduce New Column do esquema do banco pela adio Introduce New Tablede novas funcionalidades Introduce New View Update Datawww.dbseller.com.br 29. AgendaObjetivo 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 www.dbseller.com.br 30. Demonstrar Exemplos prticos! www.dbseller.com.br 31. AgendaObjetivo 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 www.dbseller.com.br 32. 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 www.dbseller.com.br 33. Para refatorar algoConhecimento Disciplina Simplicidade Bom senso Persistnciawww.dbseller.com.br 34. 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 http://www.postgresql.orgwww.dbseller.com.br 35. Dvidas/Crticas/Sugestes!!!Fabrzio de Royes Mello [email protected]