SlideShare une entreprise Scribd logo
1  sur  35
Database Refactoring com PostgreSQL


         Fabrízio de Royes Mello
        fabrizio@dbseller.com.br




                                   www.dbseller.com.br
Apresentação

Fabrízio de Royes Mello (fabrizio@dbseller.com.br)
Gerente de Tecnologia
Bacharel em Informática pela URCAMP
Experiência Profissional
   5 anos como Gerente de CPD Prefeitura
   DBSeller desde 2005
   Desenvolvimento de Software desde 1993
   Experiência em PostgreSQL desde 1999
   Experiência em PHP desde 2002


                                                     www.dbseller.com.br
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
30/06/2009 – URCAMP Alegrete/RS
http://www.urcamp.tche.br




                                                www.dbseller.com.br
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

                                               www.dbseller.com.br
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.




                                     www.dbseller.com.br
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

                                           www.dbseller.com.br
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!!!




                                              www.dbseller.com.br
Abordagem Tradicional
                                          Modelo Cascata
                                            (Waterfall)

 Planejamento, Análise, Modelagem
          (Vários Meses)

 Tabela     Tabela        Tabela

 Tabela                     Tabela
                                                  Desenvolvimento
                 Tabela                         (Vários Meses ou Anos)
  Tabela
                            Tabela
 Tabela       Tabela
                                                                         Testes (Dias)
        Tabela         Tabela

  Tabela
                            Tabela                                                       Entrega
 Tabela       Tabela
                                                  Precisa Alterar o
        Tabela         Tabela                     Modelo e agora?

Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com                        www.dbseller.com.br
Solução?

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




                                               www.dbseller.com.br
Abordagem Ágil
                              Solução Iterativa e Incremental

                          Iteração 01                             Iteração 02
    Idéia                (2 a 4 semanas)                         (2 a 4 semanas)
                                                  Software                                  Software
 Abrangente          (Planejamento, Modelagem,               (Planejamento, Modelagem,
                      Desenvolvimento, Testes)                Desenvolvimento, Testes)


                       Tabela     Tabela                       Tabela     Tabela

                       Tabela                                  Tabela
                                      Tabela                                  Tabela


                          Iteração 03                             Iteração 04
                         (2 a 4 semanas)          Software       (2 a 4 semanas)            Software
                     (Planejamento, Modelagem,               (Planejamento, Modelagem,
                      Desenvolvimento, Testes)                Desenvolvimento, Testes)


                       Tabela     Tabela                       Tabela     Tabela

                       Tabela                                  Tabela
                                      Tabela                                  Tabela

Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com                            www.dbseller.com.br
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

                                               www.dbseller.com.br
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)

                                       www.dbseller.com.br
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)




                                  www.dbseller.com.br
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)




                                        www.dbseller.com.br
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

                                               www.dbseller.com.br
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.

                                               www.dbseller.com.br
Single-Database Application

    Sua
                 Melhor Caso
  Aplicação      Baixo Acoplamento




     Seu
Banco de Dados



                                 www.dbseller.com.br
Multi-Application Database

Outras Aplicações
                            Sua           Outras Aplicações
que Você Conhece          Aplicação        que Você NÃO
                                              Conhece




Frameworks de               Seu             Outros
 Persistência             Banco de         Banco de
                           Dados            Dados

          Arquivos                     Códigos
          de Dados                     de Testes

                    Pior Caso
                    Alto Acoplamento
                                               www.dbseller.com.br
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

                                               www.dbseller.com.br
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



                          www.dbseller.com.br
Processo de Refatoração
                                             Regra Geral




                                     Período de Transição
   Esquema                           (Backups, Criação de Campos,    Esquema
    Original                               Cópias de Dados,          Resultante
                                      Remoção campos antigos, etc)




                           Aplicação do Refactoring Apropriado




Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com            www.dbseller.com.br
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

                                               www.dbseller.com.br
Structural (17)

Drop Column
Drop Table                           São mudanças na estrutura
Drop View                                 do banco de dados
Introduce Calculated Column            (tabelas, colunas, visões)
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
                                                       www.dbseller.com.br
Data Quality (13)

Add Lookup Table
Apply Standard Codes            São mudanças que melhoram
Apply Standard Type             a qualidade das informações
Consolidate Key Strategy      contidas em um banco de dados
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



                                                www.dbseller.com.br
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

                                                  www.dbseller.com.br
Architectural (12)

Add CRUD Methods               São mudanças que melhoram
Add Mirror Table                 a maneira que programas
Add Read Method                   externos interagem com
Encapsulate Table With View           a base de dados
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




                                               www.dbseller.com.br
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

                                                  www.dbseller.com.br
Transformations (5)

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




                                               www.dbseller.com.br
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

                                               www.dbseller.com.br
Demonstrar Exemplos práticos!




                          www.dbseller.com.br
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

                                               www.dbseller.com.br
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   www.dbseller.com.br
Para refatorar algo

Conhecimento
Disciplina
Simplicidade
Bom senso
Persistência




                               www.dbseller.com.br
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
                                             www.dbseller.com.br
Dúvidas/Críticas/Sugestões!!!


     Fabrízio de Royes Mello
    fabrizio@dbseller.com.br




                               www.dbseller.com.br

Contenu connexe

Similaire à Database Refactoring com PostgreSQL

Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoraçãoelliando dias
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Taller Negócio Digitais
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Maurício Aniche
 
Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Matheus de Oliveira
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwareTiago Barros
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareelliando dias
 
Tesi Dados Final
Tesi Dados FinalTesi Dados Final
Tesi Dados Finaljcaroso
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de softwareDanilo Gois
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados ConceitosCleber Ramos
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosLeinylson Fontinele
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Felipe Nascimento
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Januário Neto
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 

Similaire à Database Refactoring com PostgreSQL (20)

Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoração
 
Aula04 3
Aula04 3Aula04 3
Aula04 3
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011
 
Pgbr2013
Pgbr2013Pgbr2013
Pgbr2013
 
Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de Software
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
 
Tesi Dados Final
Tesi Dados FinalTesi Dados Final
Tesi Dados Final
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
13 banco-de-dados
13 banco-de-dados13 banco-de-dados
13 banco-de-dados
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de software
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 
TechEd_OFC302
TechEd_OFC302TechEd_OFC302
TechEd_OFC302
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 

Plus de Fabrízio Mello

PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
 
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...Fabrízio Mello
 
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...Fabrízio Mello
 
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 Fabrízio Mello
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
 
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) Fabrízio Mello
 
Como posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLComo posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLFabrízio Mello
 
Keep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentKeep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentFabrízio Mello
 
GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015Fabrízio Mello
 
GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015Fabrízio Mello
 
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosPROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosFabrízio Mello
 
Bad Smells em Bancos de Dados
Bad Smells em Bancos de DadosBad Smells em Bancos de Dados
Bad Smells em Bancos de DadosFabrízio Mello
 
Tutorial Database Refactoring
Tutorial Database RefactoringTutorial Database Refactoring
Tutorial Database RefactoringFabrízio Mello
 
Sharing Code and Experiences
Sharing Code and ExperiencesSharing Code and Experiences
Sharing Code and ExperiencesFabrízio Mello
 
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)Fabrízio Mello
 
Software Delivery Like a Boss
Software Delivery Like a BossSoftware Delivery Like a Boss
Software Delivery Like a BossFabrízio Mello
 
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)Fabrízio Mello
 
Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)Fabrízio Mello
 

Plus de Fabrízio Mello (20)

PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de Dados
 
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
 
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
 
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de Dados
 
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
 
Como posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLComo posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQL
 
Keep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentKeep calm and Database Continuous Deployment
Keep calm and Database Continuous Deployment
 
GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015
 
GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015
 
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosPROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
 
Bad Smells em Bancos de Dados
Bad Smells em Bancos de DadosBad Smells em Bancos de Dados
Bad Smells em Bancos de Dados
 
Tutorial Database Refactoring
Tutorial Database RefactoringTutorial Database Refactoring
Tutorial Database Refactoring
 
Sharing Code and Experiences
Sharing Code and ExperiencesSharing Code and Experiences
Sharing Code and Experiences
 
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
 
Software Delivery Like a Boss
Software Delivery Like a BossSoftware Delivery Like a Boss
Software Delivery Like a Boss
 
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
 
Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)
 
Dojo plpgsql
Dojo plpgsqlDojo plpgsql
Dojo plpgsql
 

Database Refactoring com PostgreSQL

  • 1. Database Refactoring com PostgreSQL Fabrízio de Royes Mello fabrizio@dbseller.com.br www.dbseller.com.br
  • 2. Apresentação Fabrízio de Royes Mello (fabrizio@dbseller.com.br) Gerente de Tecnologia Bacharel em Informática pela URCAMP Experiência Profissional 5 anos como Gerente de CPD Prefeitura DBSeller desde 2005 Desenvolvimento de Software desde 1993 Experiência em PostgreSQL desde 1999 Experiência em PHP desde 2002 www.dbseller.com.br
  • 3. 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 30/06/2009 – URCAMP Alegrete/RS http://www.urcamp.tche.br www.dbseller.com.br
  • 4. 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 www.dbseller.com.br
  • 5. 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. www.dbseller.com.br
  • 6. 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 www.dbseller.com.br
  • 7. 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!!! www.dbseller.com.br
  • 8. Abordagem Tradicional Modelo Cascata (Waterfall) Planejamento, Análise, Modelagem (Vários Meses) Tabela Tabela Tabela Tabela Tabela Desenvolvimento Tabela (Vários Meses ou Anos) Tabela Tabela Tabela Tabela Testes (Dias) Tabela Tabela Tabela Tabela Entrega Tabela Tabela Precisa Alterar o Tabela Tabela Modelo e agora? Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com www.dbseller.com.br
  • 9. Solução? Abordagem Ágil Processo Iterativo e Incremental Feedback Rápido Constante Inspeção e Adaptação DBA deve rever seus conceitos!!! (Agile DBA) www.dbseller.com.br
  • 10. Abordagem Ágil Solução Iterativa e Incremental Iteração 01 Iteração 02 Idéia (2 a 4 semanas) (2 a 4 semanas) Software Software Abrangente (Planejamento, Modelagem, (Planejamento, Modelagem, Desenvolvimento, Testes) Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Iteração 03 Iteração 04 (2 a 4 semanas) Software (2 a 4 semanas) Software (Planejamento, Modelagem, (Planejamento, Modelagem, Desenvolvimento, Testes) Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com www.dbseller.com.br
  • 11. 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 www.dbseller.com.br
  • 12. 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) www.dbseller.com.br
  • 13. 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) www.dbseller.com.br
  • 14. 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) www.dbseller.com.br
  • 15. 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 www.dbseller.com.br
  • 16. 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. www.dbseller.com.br
  • 17. Single-Database Application Sua Melhor Caso Aplicação Baixo Acoplamento Seu Banco de Dados www.dbseller.com.br
  • 18. Multi-Application Database Outras Aplicações Sua Outras Aplicações que Você Conhece Aplicação que Você NÃO Conhece Frameworks de Seu Outros Persistência Banco de Banco de Dados Dados Arquivos Códigos de Dados de Testes Pior Caso Alto Acoplamento www.dbseller.com.br
  • 19. 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 www.dbseller.com.br
  • 20. 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 www.dbseller.com.br
  • 21. Processo de Refatoração Regra Geral Período de Transição Esquema (Backups, Criação de Campos, Esquema Original Cópias de Dados, Resultante Remoção campos antigos, etc) Aplicação do Refactoring Apropriado Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com www.dbseller.com.br
  • 22. 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 www.dbseller.com.br
  • 23. Structural (17) Drop Column Drop Table São mudanças na estrutura Drop View do banco de dados Introduce Calculated Column (tabelas, colunas, visões) 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 www.dbseller.com.br
  • 24. Data Quality (13) Add Lookup Table Apply Standard Codes São mudanças que melhoram Apply Standard Type a qualidade das informações Consolidate Key Strategy contidas em um banco de dados 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 www.dbseller.com.br
  • 25. 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 www.dbseller.com.br
  • 26. Architectural (12) Add CRUD Methods São mudanças que melhoram Add Mirror Table a maneira que programas Add Read Method externos interagem com Encapsulate Table With View a base de dados 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 www.dbseller.com.br
  • 27. 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 www.dbseller.com.br
  • 28. Transformations (5) Insert Data Mudanças que alteram a semântica Introduce New Column do esquema do banco pela adição Introduce New Table de novas funcionalidades Introduce New View Update Data www.dbseller.com.br
  • 29. 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 www.dbseller.com.br
  • 30. Demonstrar Exemplos práticos! www.dbseller.com.br
  • 31. 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 www.dbseller.com.br
  • 32. 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 www.dbseller.com.br
  • 33. Para refatorar algo Conhecimento Disciplina Simplicidade Bom senso Persistência www.dbseller.com.br
  • 34. 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 www.dbseller.com.br
  • 35. Dúvidas/Críticas/Sugestões!!! Fabrízio de Royes Mello fabrizio@dbseller.com.br www.dbseller.com.br