SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

Implementing DDD Concepts in PHP
Implementing DDD Concepts in PHPImplementing DDD Concepts in PHP
Implementing DDD Concepts in PHP
Steve Rhoades
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
André Justi
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
Gabriel Moura
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
Hélio Medeiros
 
Branching and merging strategy
Branching and merging strategyBranching and merging strategy
Branching and merging strategy
Rahul Janghel
 
Git github tortoise git
Git github tortoise gitGit github tortoise git
Git github tortoise git
maxrosan
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
Igor Steinmacher
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
Edmilson Filho
 
Database Change Management as a Service
Database Change Management as a ServiceDatabase Change Management as a Service
Database Change Management as a Service
Andrew Solomon
 
Flickr Architecture Presentation
Flickr Architecture PresentationFlickr Architecture Presentation
Flickr Architecture Presentationeraz
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
Helder da Rocha
 
Flywaydb
FlywaydbFlywaydb
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
Danilo Pinotti
 
API Management Within a Microservices Architecture
API Management Within a Microservices Architecture API Management Within a Microservices Architecture
API Management Within a Microservices Architecture
Nadeesha Gamage
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
Daniel Maia
 
Protocolo TCP/IP
Protocolo TCP/IPProtocolo TCP/IP
Protocolo TCP/IP
Fernando Costa
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
Amazon Web Services
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Rodrigo Cândido da Silva
 

Mais procurados (20)

Implementing DDD Concepts in PHP
Implementing DDD Concepts in PHPImplementing DDD Concepts in PHP
Implementing DDD Concepts in PHP
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Branching and merging strategy
Branching and merging strategyBranching and merging strategy
Branching and merging strategy
 
Git github tortoise git
Git github tortoise gitGit github tortoise git
Git github tortoise git
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
Database Change Management as a Service
Database Change Management as a ServiceDatabase Change Management as a Service
Database Change Management as a Service
 
Flickr Architecture Presentation
Flickr Architecture PresentationFlickr Architecture Presentation
Flickr Architecture Presentation
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Flywaydb
FlywaydbFlywaydb
Flywaydb
 
devops
devops devops
devops
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
API Management Within a Microservices Architecture
API Management Within a Microservices Architecture API Management Within a Microservices Architecture
API Management Within a Microservices Architecture
 
Git+github
Git+githubGit+github
Git+github
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
 
Protocolo TCP/IP
Protocolo TCP/IPProtocolo TCP/IP
Protocolo TCP/IP
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring Boot
 

Destaque

Evoluindo bancos de dados com Flyway
Evoluindo bancos de dados com FlywayEvoluindo bancos de dados com Flyway
Evoluindo bancos de dados com Flyway
Vitor Albuquerque
 
Database migration with flyway
Database migration  with flywayDatabase migration  with flyway
Database migration with flyway
Jonathan Holloway
 
Getting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydbGetting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydb
Girish Bapat
 
Java8
Java8Java8
Bootstrap
BootstrapBootstrap
Bootstrap
Jadson Santos
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizada
Jadson Santos
 
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...
Jadson Santos
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 Presentation
Jadson Santos
 
Gradle
GradleGradle
Flyway
FlywayFlyway
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
Jadson Santos
 

Destaque (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
 
Getting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydbGetting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydb
 
Java8
Java8Java8
Java8
 
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
 

Semelhante a Introdução ao Flyway

Evoluindo bancos de dados com flyway
Evoluindo bancos de dados com flywayEvoluindo bancos de dados com flyway
Evoluindo bancos de dados com flyway
Vitor Albuquerque
 
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
 
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
Eduardo Pires
 
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
Igor Rosa Macedo
 
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...
Renato Groff
 
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
Mauricio Fernandes de Castro
 
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 ...
Eliel Simoncelo
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
André Justi
 
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
Ismael Stahelin
 
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
Arlindo Santos
 
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
Wendreo L. Fernandes
 
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 NWDImarlosimon
 
[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core
Jaqueline Ramos
 
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
Diego Tremper
 
[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
Samanta Cicilia
 
Cake Php
Cake PhpCake Php
Cake Php
Laura Lopes
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágil
Claudia Melo
 
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
Felipe Klerk Signorini
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
Éverton Ribeiro
 

Semelhante a 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 ...
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
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
 

Mais 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
 
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
Jadson Santos
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with Jenkins
Jadson Santos
 
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
Jadson Santos
 
Vue.js
Vue.jsVue.js
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous Delivery
Jadson Santos
 
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
Jadson Santos
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed Lock
Jadson Santos
 
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
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
 

Mais 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