数据库版本管理工具Flyway(4.0.3)---介绍(译文)
Flyway
Evolve your Database Schema easily and
reliably across all your instances
简单的、可靠的升级(发展)你的数据库模式,通过所有你的实例。
Why database migrations? 为什么要进行数据库的迁移
First,let's start from the beginning and assume we have a project called Shiny and its primary deliverable is a piece of sofeware called Shiny Soft that connects to a database called Shiny DB.B
首先,假设我们我们有一个叫做Shiny的项目,这个项目最初的交付物是一系列的叫做Shiny的软件。这个软件连接到一个叫做Shiny DB的数据库。
The simplest diagram to represent this could look something like this:
最简单的去呈现这个关系的示意图是:
We have our software and our database. Great. And this could very well be all you need.
我们有我们自己的软件和数据库。很好,并且运行良好。
But on most projects, this simple view of the world very quickly translate into this:
但是在大多数的项目上,这个简单的场景很快转变成这种方式:
We now not only have to deal with one copy of our environment,but with serveral.This presents a number of challenges.
我们现在不仅必须要处理一个我们环境的副本,更多的时候是处理好几个。这个将会是一个很大的挑战。
We have been pretty good at solving them on the code side.
我们已经有了相当好的解决办法在我们的代码上。
·Version control is now universal with better tools everyday. 版本现在普遍的被很好的工具每天控制着。
·We have reproducible builds and continuous integration. 我们有再生的创建机制和连续的综合机制。
·We hava well defined release and deployment processes. 我们有很好的定义发布和开发的过程、
But what about the database? 但是我们的数据库该如何控制呢?
Well unfortunately we have not been doing so well there.Many projects still rely on mannually applied sql scripts.
不幸的是我们这方面做的并不是很好。很多项目依然依靠人工去执行脚本。
And sometimes not even that(a quick sql statement here or there to fix a problem).And soon many questions arise:
并且有时候问题还不止这些(如何从这或者哪快速的收集脚本清单也将是个问题)。马上一些问题将会产生:
· What state is the database in on this machine? 数据库在这台机器上是什么状态?
` Has this script already been applied or not ? 这个脚本到底执行了没有呢?
`Has the quick fix in production been applied in test afterwards? 在测试环境中有快速解决生产中问题的吗?
`How do you set up a new database instance? 如何建立一个新的数据库实例呢?
More often than not the answer to these questions is : We don't know. 更多的时候,我们不知道如何回答这些问题:我们不知道。
Database migrations are a great way to regain control of this mess. 数据库迁移是一个很好的方式去处理这些混乱的情况.
They allow you to : 他们会让你:
`Recreate a database from scratch ·从错乱的情况下重新创建一个数据库
`Make it clear at all times what state a database is in ·可以实时的清楚的目前数据库是个什么状态
`Migrate in a deterministic way from your current version of the database to a newer one ·以一种确定性的方式迁移从当前版本的数据库更新
数据库版本管理工具Flyway(4.0.3)---介绍(译文)的更多相关文章
- 数据库版本管理工具Flyway(4.0.3)---工作机制(译文)
How Flyway works The easiest scenario is when you point Flyway to an empty database. 最容易的方案是Flyway指向 ...
- [jOOQ中文]3. 数据库版本管理工具Flyway
https://segmentfault.com/a/1190000010526452 在执行数据库迁移时,我们推荐使用jOOQ与Flyway - 数据库迁移轻松. 在本章中,我们将简单的来使用这两个 ...
- 数据库版本管理工具--Flyway的使用
软件开发正常流程是:开发环境 ---> 测试环境 ----> 产环境 在开发过程中经常需要变更数据库: 表结构变更. 基础数据变更. 最直接的做法是:用客户端连上数据库直接修改. 依次修 ...
- 数据库版本管理工具Flyway——基础篇
Flyway 默认规约 SQL 脚本文件默认位置是项目的源文件夹下的db/migration 目录. Java 代码默认位于db.migration 包. SQL 脚本文件及Java 代码类名必须遵循 ...
- 数据库版本管理工具flyway
引入flyway_core jar包 java 代码实现 public class FlywayMigration { @Resource private DataSource dataSource ...
- 【flyway】开源的数据库版本管理工具【migration】
开源的数据库版本管理工具[migration] 记录
- 在SpringBoot中使用flyway进行数据库版本管理
本文大纲 flyway是什么 能帮助我们解决什么问题 springboot环境下使用flyway flyway的工作原理 一.flyway是什么 Flyway是一个开源的数据库版本管理工具,并且极力主 ...
- Java敏捷数据库迁移框架——Flyway
1.引言 想到要管理数据库的版本,是在实际产品中遇到问题后想到的一种解决方案,当时各个环境的数据库乱作一团,没有任何一个人(开发.测试.维护人员)能够讲清楚当前环境下的数据库是哪个版本,与哪个版本的应 ...
- 使用alembic进行数据库版本管理
前言 随着项目业务需求的不断变更,数据库的表结构修改难以避免,此时就需要对数据库的修改加以记录和控制,便于项目的版本管理和随意的升级和降级. Alembic就可以很好的解决这个问题.Alembic是S ...
随机推荐
- [转] JS nodeType返回类型
将HTML DOM中几个容易常用的属性做下记录: nodeName.nodeValue 以及 nodeType 包含有关于节点的信息. nodeName 属性含有某个节点的名称. 元素节点的 node ...
- solr error logs org.apache.solr.common.SolrException: ERROR: [doc=17] unknown field alias
在solr中 添加新的索引词语时,报如标题所示错误,指定是插入的字段没有在solr索引字段里 可以修改 solr安装目录/solr/conf 目录下的 schema.xml 在此xml文件内加入所需字 ...
- 常用PC服务器LSI阵列卡配置
通常,我们使用的DELL/HP/IBM三家的机架式PC级服务器阵列卡是从LSI的卡OEM出来的,DELL和IBM两家的阵列卡原生程度较高,没有做太多封装,可以用原厂提供的阵列卡管理工具进行监控:而HP ...
- 异步tcp通信——APM.Core 服务端概述
为什么使用异步 异步线程是由线程池负责管理,而多线程,我们可以自己控制,当然在多线程中我们也可以使用线程池.就拿网络扒虫而言,如果使用异步模式去实现,它使用线程池进行管理.异步操作执行时,会将操作丢给 ...
- ViewPage 一次滑动多页
效果 size是3的倍数时 其他情况下 初始化 private List<HonerUserBean> anchorList; private ViewPager vp ...
- Error prompt:“xxx is not in the sudoers file”----Solution
//Situation System prompts "xxx is not in the sudoers file"(xxx equals the user name) w ...
- apache的500错误是写到哪个文件里面
apache的500错误是写到哪个文件里面
- C# Gma.QrCodeNet生成二维码
一.使用C#生成二维码类库之一是qrcodenet 源代码地址: http://qrcodenet.codeplex.com/ 二.使用实例 定义处理字符串 static string url = & ...
- (转)Discuz!NT图文安装教程
不同目录下的安装方法根据目前大家对论坛的使用需求,在安装上面大致有三种情况,站点根目录下安装,站点虚拟目录下安装和站点子目录下安装. 1.根目录安装 根目录安装是最简单也是稳定系数最高的安装和使用方式 ...
- MapReduce UnitTest
通常情况下,我们需要用小数据集来单元测试我们写好的map函数和reduce函数.而一般我们可以使用Mockito框架来模拟OutputCollector对象(Hadoop版本号小于0.20.0)和Co ...