Refatoração Banco de Dados (Agileweekend2009)

download Refatoração Banco de Dados (Agileweekend2009)

If you can't read please download the document

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 of Refatoração Banco de Dados (Agileweekend2009)

  • 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]