Database refactoring postgresql_consegi2010

download Database refactoring postgresql_consegi2010

If you can't read please download the document

Transcript of Database refactoring postgresql_consegi2010

CONSEGI 2010
Database Refactoring com PostgreSQL

Fabrzio de Royes Mello
[email protected]

Apresentao

Fabrzio de Royes Mello ([email protected])

Gerente de Tecnologia

Bacharel em Informtica pela URCAMP

Experincia Profissional5 anos como Gerente de CPD Prefeitura

DBSeller desde 2005

Desenvolvimento de Software desde 1993

Experincia em PostgreSQL desde 1999

Experincia em PHP desde 2002

Desenvolvedor do Software Pblico e-cidade

Changelog

25/04/2009 Porto Alegre AgileWeekend 2009http://agileweekend.guma-rs.org/

08/05/2009 PGDay RShttp://www.postgresql.org.br/eventos/pgday/rs

30/06/2009 URCAMP Alegrete/RShttp://www.urcamp.tche.br

19/08/2010 CONSEGI 2010 Brasliahttp://www.consegi.gov.br

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

Objetivo

Apresentar os conceitos de Refactoring bem como sua aplicao em Banco de Dados, o chamado Database Refactoring, abordando o Catlogo de Refactorings com suas definies, categorias e exemplos prticos.

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

Problema

Abordagem TradicionalAnlise... 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!!!

Modelo Cascata(Waterfall)

Desenvolvimento(Vrios Meses ou Anos)Testes (Dias)Entrega

Planejamento, Anlise, Modelagem(Vrios Meses)TabelaTabelaTabelaTabelaTabelaTabelaTabelaTabelaTabelaTabelaTabelaTabela

TabelaTabelaTabelaTabelaTabelaTabela

Precisa Alterar o Modelo e agora?

Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com

Abordagem Tradicional

Uma Soluo/Alternativa?

Abordagem gilProcesso Iterativo e Incremental

Feedback Rpido

Constante Inspeo e Adaptao

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

Abordagem gil

Soluo Iterativa e Incremental

IdiaAbrangente

Iterao 01(2 a 4 semanas)(Planejamento, Modelagem,Desenvolvimento, Testes)TabelaTabelaTabelaTabela

Software

Iterao 02(2 a 4 semanas)(Planejamento, Modelagem,Desenvolvimento, Testes)Software

TabelaTabelaTabelaTabela

Iterao 03(2 a 4 semanas)(Planejamento, Modelagem,Desenvolvimento, Testes)TabelaTabelaTabelaTabela

Software

Iterao 04(2 a 4 semanas)(Planejamento, Modelagem,Desenvolvimento, Testes)Software

TabelaTabelaTabelaTabela

Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com

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

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)

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)

Database Refactoring

Mudana disciplinada na estrutura de uma base de dados que no altera sua semntica, porm melhora seu projeto e minimiza a introduo de dados inconsistentes.

(Fabrzio de Royes Mello 2009)

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

Dificuldades na aplicao

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

SuaAplicaoSeu Banco de Dados

Melhor Caso

Baixo Acoplamento

Single-Database Application

SuaAplicaoSeu Banco de Dados

OutrosBanco de Dados

Frameworks dePersistncia

Outras Aplicaesque Voc ConheceOutras Aplicaesque Voc NOConhece

Arquivosde DadosCdigos de Testes

Pior Caso

Alto Acoplamento

Multi-Application Database

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

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

Processo de Refatorao

Esquema OriginalPerodo de Transio(Backups, Criao de Campos, Cpias de Dados,Remoo campos antigos, etc)Esquema Resultante

Regra Geral

Aplicao do Refactoring Apropriado

Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com

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

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 estrutura do banco de dados(tabelas, colunas, vises)

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 melhoram a qualidade das informaes contidas em um banco de dados

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 que uma linha referenciada exista em outra e/ou assegura que uma linha que no mais necessria seja removida apropriadamente

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 melhoram a maneira que programas externos interagem com a base de dados

Method (11)

Interface Changing RefactoringsAdd Parameter

Parameterize Method

Remove Parameter

Rename Method

Reorder Parameters

Replace Parameter with Explicit Methods

Internal RefactoringsConsolidate Conditional Expression

Decompose Conditional

Extract Method

Introduce Variable

Remove Control Flag

So mudanas que melhoram a qualidade de uma Procedure ou Funo

Transformations (5)

Insert Data

Introduce New Column

Introduce New Table

Introduce New View

Update Data

Mudanas que alteram a semntica do esquema do banco pela adio de novas funcionalidades

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

Demonstrar Exemplos prticos!

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

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 facilitarManuteno e

Evoluo da aplicao

Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com

Para refatorar algo

Conhecimento

Disciplina

Simplicidade

Bom senso

Persistncia

Algumas Referncias!

Livros:Refactoring Databases (Scott W. Ambler e Pramod J. Sadalage)

Refactoring (Martin Fowler)

Agile Modeling (Scott W. Ambler)

Links:http://www.agiledata.org

http://www.databaserefactoring.org

http://visaoagil.wordpress.com

http://www.refactoring.com

http://www.postgresql.org

http://www.epictest.org

http://www.slideshare.net/diogobiazus/testes-unitarios-com-postgre-sql

Dvidas/Crticas/Sugestes!!!

Fabrzio de Royes Mello
[email protected]

http://fabriziomello.blogspot.com

Muokkaa otsikon tekstimuotoa napsauttamalla

Muokkaa jsennyksen tekstimuotoa napsauttamallaToinen jsennystasoKolmas jsennystasoNeljs jsennystasoViides jsennystasoKuudes jsennystasoSeitsems jsennystasoKahdeksas jsennystasoYhdekss jsennystaso

www.dbseller.com.br