SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Jadson Santos
Computer Engineer
Contextualização
• Nós estamos craques em resolver o
problema de versionamento do código
fonte. (SVN, GIT, branches, tags, etc..)
• Mas e o banco de dados?
•  Qual a versão exata do banco que nós utilizamos?
•  A maioria projetos ainda aplicam as mudanças
manualmente.
02/09/15 FlyWay 2
Flyway
• Como o flyway funciona?
•  O flyway cria e gerencia uma tabela de meta
dados no banco de dados
•  A cada script aplicado, a tabela de meta dados é
atualizada para registrar a mudança e impedir
que ela seja aplicada novamente
•  Essa tabela vai conter o versionamento do banco
02/09/15 FlyWay 3
Flyway
• Por padrão essa tabela é chamada de
schema_version.
• Se existem mais de 1 esquema essa tabela
fica no primeiro esquema configurado
02/09/15 FlyWay 4
Instalação
• Passo 1
•  Apenas descompactar o flyway.zip em um diretório de sua
preferência
02/09/15 FlyWay 5
Instalação
• Passo 2
•  Editar o arquivo de configuração do flyway
02/09/15 FlyWay 6
Instalação
• Passo 2
•  Editar o arquivo de configuração do flyway colocando as
configurações do banco
02/09/15 FlyWay 7
Funcionamento
• Comando Info
•  Mostra o status do versionamento do banco
•  Ps.: O flyway chama o versionamento de “migration”
02/09/15 FlyWay 8
Funcionamento
• Comando Validate
•  Valida se todos os sqls foram corretamente aplicados
02/09/15 FlyWay 9
Funcionamento
• Comando BaseLine
•  Aplica todas as mudanças e marca um ponto estável
•  Exemplo de aplicação: A cada versão de aprimoramento
02/09/15 FlyWay 10
Funcionamento
• Comando BaseLine
•  Tabela de versionamento do banco criada:
02/09/15 FlyWay 11
Realizando uma atualização
• Localização dos Scripts
•  Colocar os scripts de atualização do banco dentro do
diretório db/migration do projeto SistemaDATABASE definido
pelo processo.
•  Exemplo do SigEventos:
02/09/15 FlyWay 12
Realizando uma atualização
• Nomenclatura padrão dos Scripts do flyway
02/09/15 FlyWay 13
Realizando uma atualização
• Configurando a Localização dos Scripts do
Flyway
02/09/15 FlyWay 14
Realizando uma atualização
• Comando Migrate
•  Aplica os scripts que ainda não foram aplicados e
atualiza o versionamento do banco de dados
02/09/15 FlyWay 15
Realizando uma atualização
• Comando Migrate
•  Aplica os scripts que ainda não foram aplicados e
atualiza o versionamento do banco de dados
02/09/15 FlyWay 16
Integração com o Gradle
• O Flyway é integrado ao Gradle
•  É possível rodar o flyway automaticamente a partir
de um script do Gradle
02/09/15 FlyWay 17
Integração com o Gradle
• O Flyway é integrado ao Gradle
•  É possível rodar o flyway automaticamente a partir
de um script do Gradle
02/09/15 FlyWay 18
Integração com o Gradle
• O Flyway é integrado ao Gradle
•  Possibilitando que a aplicação das mudanças no
banco sejam realizadas automaticamente sem a
intervenção humana. Pode ser colocada dentro
de uma task do Gradle que será executa pelo
jenkins no job que faz deploy do sistema.
•  Mais ainda, para que a migração ocorra, os scripts
sqls tem que estar versionados previamente no
controle de versão. Se não, o Gradle não vai
achar e aplicar. Isso evita a aplicação mudanças
no banco sem antes ter versionado o script.
02/09/15 FlyWay 19
Onde saber mais?
• http://flywaydb.org/
• http://flywaydb.org/documentation/
• http://flywaydb.org/documentation/
articles.html
02/09/15 FlyWay 20
FlyWay02/09/15
jadsonjs@gmail.com
21

Contenu connexe

Tendances

Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
 

Tendances (20)

Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Database migrations with Flyway and Liquibase
Database migrations with Flyway and LiquibaseDatabase migrations with Flyway and Liquibase
Database migrations with Flyway and Liquibase
 
Banco de dados orientados a objetos
Banco de dados orientados a objetos Banco de dados orientados a objetos
Banco de dados orientados a objetos
 
Aula 1. apresentação + frameworks
Aula 1. apresentação + frameworksAula 1. apresentação + frameworks
Aula 1. apresentação + frameworks
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
O Glossário das tags de HTML ® Para iniciantes
O Glossário das tags de HTML ® Para iniciantesO Glossário das tags de HTML ® Para iniciantes
O Glossário das tags de HTML ® Para iniciantes
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
SI - Comunicação
SI - ComunicaçãoSI - Comunicação
SI - Comunicação
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Introdução à Gerência de configuração de Software
Introdução à Gerência de configuração de SoftwareIntrodução à Gerência de configuração de Software
Introdução à Gerência de configuração de Software
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Aula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxAula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptx
 

En vedette

En vedette (11)

Evoluindo bancos de dados com Flyway
Evoluindo bancos de dados com FlywayEvoluindo bancos de dados com Flyway
Evoluindo bancos de dados com Flyway
 
Database migration with flyway
Database migration  with flywayDatabase migration  with flyway
Database migration with flyway
 
Java8
Java8Java8
Java8
 
Git
GitGit
Git
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizada
 
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 Presentation
 
Gradle
GradleGradle
Gradle
 
Flyway
FlywayFlyway
Flyway
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 

Similaire à Introdução ao Flyway

Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
Sap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDISap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDI
marlosimon
 

Similaire à Introdução ao Flyway (20)

Evoluindo bancos de dados com flyway
Evoluindo bancos de dados com flywayEvoluindo bancos de dados com flyway
Evoluindo bancos de dados com flyway
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast
 
Devops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerDevops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL Server
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
TechEd_OFC302
TechEd_OFC302TechEd_OFC302
TechEd_OFC302
 
Apresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de CombustíveisApresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de Combustíveis
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
 
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Sap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDISap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDI
 
[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
 
Cake Php
Cake PhpCake Php
Cake Php
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágil
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 

Plus de Jadson Santos

A Deep Dive into Continuous Integration Monitoring Practices
A Deep Dive into Continuous Integration Monitoring PracticesA Deep Dive into Continuous Integration Monitoring Practices
A Deep Dive into Continuous Integration Monitoring Practices
Jadson Santos
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Jadson Santos
 

Plus de Jadson Santos (11)

A Deep Dive into Continuous Integration Monitoring Practices
A Deep Dive into Continuous Integration Monitoring PracticesA Deep Dive into Continuous Integration Monitoring Practices
A Deep Dive into Continuous Integration Monitoring Practices
 
Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and Java
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with Jenkins
 
Cd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuCd with Github Travis CI and Heroku
Cd with Github Travis CI and Heroku
 
Vue.js
Vue.jsVue.js
Vue.js
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous Delivery
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete project
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed Lock
 
Usando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFUsando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSF
 
Enums
EnumsEnums
Enums
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
 

Introdução ao Flyway