advertisement

Database Refactoring com PostgreSQL PGDay RS 2009

71 %
29 %
advertisement
Information about Database Refactoring com PostgreSQL PGDay RS 2009

Published on May 8, 2009

Author: fabriziomello

Source: slideshare.net

Description

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

Database Refactoring com PostgreSQL Fabrízio de Royes Mello [email_address]

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 aprovação ) http://fisl.softwarelivre.org/10/www/

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 aprovação )

http://fisl.softwarelivre.org/10/www/

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

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

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.

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.

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

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

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

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

Modelo Cascata (Waterfall) Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com Abordagem Tradicional Desenvolvimento (Vários Meses ou Anos) Testes (Dias) Entrega Planejamento, Análise, Modelagem (Vários Meses) Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Precisa Alterar o Modelo e agora?

Solução? Abordagem Ágil Processo Iterativo e Incremental Feedback Rápido Constante Inspeção e Adaptação DBA deve rever seus conceitos!!! (Agile DBA)

Abordagem Ágil

Processo Iterativo e Incremental

Feedback Rápido

Constante Inspeção e Adaptação

DBA deve rever seus conceitos!!! (Agile DBA)

Abordagem Ágil Solução Iterativa e Incremental Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com Idéia Abrangente Iteração 01 (2 a 4 semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Software Iteração 02 (2 a 4 semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Software Tabela Tabela Tabela Tabela Iteração 03 (2 a 4 semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Software Iteração 04 (2 a 4 semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Software Tabela Tabela Tabela Tabela

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

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

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)

”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)

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)

”É 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)

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)

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)

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

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

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.

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.

Melhor Caso Baixo Acoplamento Single-Database Application Sua Aplicação Seu Banco de Dados

Melhor Caso

Baixo Acoplamento

Pior Caso Alto Acoplamento Multi-Application Database Sua Aplicação Seu Banco de Dados Outros Banco de Dados Frameworks de Persistência Outras Aplicações que Você Conhece Outras Aplicações que Você NÃO Conhece Arquivos de Dados Códigos de Testes

Pior Caso

Alto Acoplamento

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

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

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

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

Processo de Refatoração Regra Geral Aplicação do Refactoring Apropriado Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com Esquema Original Período de Transição (Backups, Criação de Campos, Cópias de Dados, Remoção campos antigos, etc) Esquema Resultante

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

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

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 São mudanças na estrutura do banco de dados (tabelas, colunas, visões)

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

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 São mudanças que melhoram a qualidade das informações contidas em um banco de dados

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

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

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

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 São mudanças que melhoram a maneira que programas externos interagem com a base de dados

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

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

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

Transformations (5) Insert Data Introduce New Column Introduce New Table Introduce New View Update Data Mudanças que alteram a semântica do esquema do banco pela adição de novas funcionalidades

Insert Data

Introduce New Column

Introduce New Table

Introduce New View

Update Data

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

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

Demonstrar Exemplos práticos!

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

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

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

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

Para refatorar algo Conhecimento Disciplina Simplicidade Bom senso Persistência

Conhecimento

Disciplina

Simplicidade

Bom senso

Persistência

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

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

Dúvidas/Críticas/Sugestões!!! Fabrízio de Royes Mello [email_address]

Add a comment

Related pages

Database Refactoring PostgreSQL Urcamp Alegrete 2009 ...

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

Bruce Momjian: Postgres Blog

Programatic Control of postgresql.conf Settings. ... , Version-Controlled Database Refactoring. ... ("RS"), they are really ...
Read more

PostgreSQL FTS Solutions FOSDEM 2013 - PGDAY - Technology

PostgreSQL FTS Solutions FOSDEM 2013 - PGDAY Dec 17, 2014 Technology emanuel-calvo ...
Read more

POA comemora Dia do PostgreSQL | Notícias | Baguete

POA comemora Dia do PostgreSQL . Notícias; ... o PGDay - Dia do PostgreSQL. ... Entre as palestras confirmadas estão Database Refactoring com PostgreSQL ...
Read more