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
Top Related