Database Refactoring com PostgreSQL PGDay RS 2009

Embed Size (px)

DESCRIPTION

Palestra sobre Refatoração de Banco de Dados com PostgreSQL no PGDay RS 2009

Citation preview

  • 1. Database Refactoring com PostgreSQL Fabrzio de Royes Mello [email_address]

2. 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
  • {24-27}/06/2009 FISL10 ( aguardando aprovao )
    • http://fisl.softwarelivre.org/10/www/

3. 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

4. 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.

5. 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

6. 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!!!

7. 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? 8. Soluo?

  • Abordagem gil
    • Processo Iterativo e Incremental
    • Feedback Rpido
    • Constante Inspeo e Adaptao
    • DBA deve rever seus conceitos!!! (Agile DBA)

9. 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 10. 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

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

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

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

14. 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

15. 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.

16.

  • Melhor Caso
  • Baixo Acoplamento

Single-Database Application Sua Aplicao SeuBanco de Dados 17.

  • 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 18. 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

19. 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

20. 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 21. 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

22. 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) 23. 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 24. 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 25. 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 26. 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 27. 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 28. 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

29. Demonstrar Exemplos prticos! 30. 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

31. 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 32. Para refatorar algo

  • Conhecimento
  • Disciplina
  • Simplicidade
  • Bom senso
  • Persistncia

33. 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.org

34. Dvidas/Crticas/Sugestes!!! Fabrzio de Royes Mello [email_address]