SlideShare a Scribd company logo
1 of 22
数据库开发的版本控制和持续集成


      Michael Zeng
      --------------------------------------------------
      成都研发中心
      EMail : zengjingtao@91huayi.com
You never develop code without version
control, why do you develop your
database without it?

代码开发流程中必不可少的版本控制机
制,在数据库开发中你用了吗?
我们的位置?

1.   在数据库上手工开发
2.   建模工具,直接更新到数据库
3.   建模工具,生成完整脚本进行版本控制
4.   建模工具,版本控制,持续集成
传统的模式 (part 1)

数据库脚本版本化
传统的模式 (part 2)

新建库




升级库
传统的模式 (part 3)

优点
  脚本统一管理
  追溯版本修改历史
  半部署自动化


              不足
               × 升级过程繁琐
               × 人工干预带来的风险
               × 无法持续集成
数据库开发三条原则

1. Never use a shared database server for development work.
不要在共享数据库服务器上进行开发工作,避免开发人员相互覆盖彼此
所做的修改。


2. Always Have a Single, Authoritative Source For Your Schema
仅保留一份权威的Schema生成源,保证每一个人都可以用它轻松地重新
创建一个新的数据库。


3. Always Version Your Database
对数据库进行版本管理。将变化由开发传递到测试,最后到生产环境。


                                                  Scott Allen
什么是持续集成


   持续集成(Continuous Integration)是一种软件
开发实践,即团队开发成员经常集成它们的工作。
每次集成都通过自动化的构建(包括编译,发布,
自动化测试)来验证,从而尽快地发现集成错误。


                         Martin Fowler
DBCI中的几个概念

Baseline
     一个或者一组脚本
     所有可以从零开始生成数据库的SQL
                                Baseline

Change Set
     修改必须通过脚本文件以”增量更新”实现   Change     Log
                             Set
     增量是相对的
     增量有唯一的标识符

Applied Change Log
     记录Change Set应用的情况
     避免重复运行同一个修改
DBCI中的版本控制

分别处理Baseline和Change Set
DBCI中的发布更新

      Applied Change
            Log


                 Update


                 Roll Back
理论 VS 实现

商业产品
  Red Gate
开源项目
  Liquibase
  Apache Maven
自力更生
  Shell
Liquibase是什么

Liquibase is an open source (Apache 2.0 Licensed), database-
independent library for tracking, managing and applying database
changes. It is built on a simple premise: All database changes are
stored in a human readable yet trackable form and checked into
source control.
 Database Change Management工具
 开源,轻量级
 垮平台,数据库类型无关
 基于XML配置
 仅仅是一个框架工具
脚本目录结构

Baseline                   Replaceable
                             Object
     一个或者一组脚本             Non Replaceable
     从零开始生成                    Object

Change Set
     以”增量更新”实现            Optional
     增量是相对的
     增量有唯一的标识符

Applied Change Log
     记录Change Set应用的情况
     避免重复运行同一个修改
Install VS Update

Fresh Install            Daily Update
从零开始创建一个应用,             把指定应用更新到当前版
并且更新到当前版本。               本
仅可运行一次。                 可以重复运行
Fresh_Install.XML
Baseline.XML



           author + id = identifier

                     External SQL File




               Set current version
ChangeSet.XML



    Check current version

              Embedded SQL
              External SQL File
              XML Element
Program.XML




                  run everytime




替换SQL参数或者特殊字符
运行Liquibase

通过Command Line,Apache Ant,
 Apache Maven等多种方式
Ant调用例子
Tips

 XML文件编码建议使用UTF-8
 参数替换
    XML文件中可以使用动态参数(路径,文件名,等)
    SQL脚本中可以使用动态参数(表空间名称,用户名称,等)
 Embedded SQL
    合理使用splitstatement参数
 External SQL File
    使用encoding参数,指明SQL脚本使用的字符编码
    末尾包含/等特殊符号,运行前使用<modifySql>进行替换
数据库持续集成

More Related Content

What's hot

Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Will Huang
 
使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署Gelis Wu
 
TFS source control 功能說明
TFS source control 功能說明TFS source control 功能說明
TFS source control 功能說明Gelis Wu
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Gelis Wu
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索Will Huang
 
互联网持续交付整形记
互联网持续交付整形记互联网持续交付整形记
互联网持续交付整形记Ryan YU
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略Will Huang
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革Will Huang
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中Andrew Wu
 
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMailServlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMailJustin Lin
 
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)Jeff Chu
 
Monitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - ConsulMonitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - ConsulAndrew Wu
 
Nuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的packageNuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的packageAlan Tsai
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構Andrew Wu
 
研发云:借助云计算实现持续交付(by冯智超)
研发云:借助云计算实现持续交付(by冯智超)研发云:借助云计算实现持续交付(by冯智超)
研发云:借助云计算实现持续交付(by冯智超)gigix1980
 
ASP.NET MVC 5 新功能探索
ASP.NET MVC 5 新功能探索ASP.NET MVC 5 新功能探索
ASP.NET MVC 5 新功能探索Will Huang
 
API Token 入門
API Token 入門API Token 入門
API Token 入門Andrew Wu
 

What's hot (20)

Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
 
Xpp
XppXpp
Xpp
 
使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署
 
TFS source control 功能說明
TFS source control 功能說明TFS source control 功能說明
TFS source control 功能說明
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
互联网持续交付整形记
互联网持续交付整形记互联网持续交付整形记
互联网持续交付整形记
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMailServlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
 
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
 
Monitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - ConsulMonitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - Consul
 
Nuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的packageNuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的package
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
 
研发云:借助云计算实现持续交付(by冯智超)
研发云:借助云计算实现持续交付(by冯智超)研发云:借助云计算实现持续交付(by冯智超)
研发云:借助云计算实现持续交付(by冯智超)
 
ASP.NET MVC 5 新功能探索
ASP.NET MVC 5 新功能探索ASP.NET MVC 5 新功能探索
ASP.NET MVC 5 新功能探索
 
API Token 入門
API Token 入門API Token 入門
API Token 入門
 
1~60
1~601~60
1~60
 

Viewers also liked

Somaliland – in search for international recognition / Somaliland – auf der S...
Somaliland – in search for international recognition / Somaliland – auf der S...Somaliland – in search for international recognition / Somaliland – auf der S...
Somaliland – in search for international recognition / Somaliland – auf der S...GIGA Informationszentrum
 
Four s fortnightly pharma health track 23th january - 5th febuary 2012
Four s fortnightly pharma health track  23th january - 5th febuary 2012Four s fortnightly pharma health track  23th january - 5th febuary 2012
Four s fortnightly pharma health track 23th january - 5th febuary 2012Four-S
 
项目申报流程简版
项目申报流程简版项目申报流程简版
项目申报流程简版vimsuner
 
M9 2 bim_aluno_2014
M9 2 bim_aluno_2014M9 2 bim_aluno_2014
M9 2 bim_aluno_2014jeniifers
 
Presentation Teknisa
Presentation TeknisaPresentation Teknisa
Presentation Teknisaguestf98a87
 
Mercury Body Burden Correlated with Autism Disorder
Mercury Body Burden Correlated with Autism Disorder Mercury Body Burden Correlated with Autism Disorder
Mercury Body Burden Correlated with Autism Disorder v2zq
 
EDYS: Project Superstars
EDYS: Project SuperstarsEDYS: Project Superstars
EDYS: Project SuperstarsGabriel BREZOIU
 
Challenges of Setting Up Commodity or Derivatives Exchanges in Emerging Markets
Challenges of Setting Up Commodity or Derivatives Exchanges in Emerging MarketsChallenges of Setting Up Commodity or Derivatives Exchanges in Emerging Markets
Challenges of Setting Up Commodity or Derivatives Exchanges in Emerging MarketsJeremmy Okonjo
 
فن صيد القلوب
فن صيد القلوبفن صيد القلوب
فن صيد القلوبAmin Bahily
 
ECO 150 - Aula 08 - Resultados do Projeto
ECO 150 -  Aula 08 - Resultados do ProjetoECO 150 -  Aula 08 - Resultados do Projeto
ECO 150 - Aula 08 - Resultados do ProjetoThiago Ribeiro
 
2014年健策精密企業社會責任報告
2014年健策精密企業社會責任報告2014年健策精密企業社會責任報告
2014年健策精密企業社會責任報告CSRone
 
Curso de arranjo ian guest vol 1
Curso de arranjo  ian guest vol 1Curso de arranjo  ian guest vol 1
Curso de arranjo ian guest vol 1MILTON ALVES
 
Potable Spirits Certified Under EAS 109
Potable Spirits Certified Under EAS 109Potable Spirits Certified Under EAS 109
Potable Spirits Certified Under EAS 109The Star Newspaper
 

Viewers also liked (20)

Somaliland – in search for international recognition / Somaliland – auf der S...
Somaliland – in search for international recognition / Somaliland – auf der S...Somaliland – in search for international recognition / Somaliland – auf der S...
Somaliland – in search for international recognition / Somaliland – auf der S...
 
Four s fortnightly pharma health track 23th january - 5th febuary 2012
Four s fortnightly pharma health track  23th january - 5th febuary 2012Four s fortnightly pharma health track  23th january - 5th febuary 2012
Four s fortnightly pharma health track 23th january - 5th febuary 2012
 
项目申报流程简版
项目申报流程简版项目申报流程简版
项目申报流程简版
 
Release.sonhos.24.03.2010
Release.sonhos.24.03.2010Release.sonhos.24.03.2010
Release.sonhos.24.03.2010
 
M9 2 bim_aluno_2014
M9 2 bim_aluno_2014M9 2 bim_aluno_2014
M9 2 bim_aluno_2014
 
Caso de Éxito: Programa de medicamentos esenciales PROMESE/CAL
Caso de Éxito: Programa de medicamentos esenciales PROMESE/CALCaso de Éxito: Programa de medicamentos esenciales PROMESE/CAL
Caso de Éxito: Programa de medicamentos esenciales PROMESE/CAL
 
Presentation Teknisa
Presentation TeknisaPresentation Teknisa
Presentation Teknisa
 
Mercury Body Burden Correlated with Autism Disorder
Mercury Body Burden Correlated with Autism Disorder Mercury Body Burden Correlated with Autism Disorder
Mercury Body Burden Correlated with Autism Disorder
 
EDYS: Project Superstars
EDYS: Project SuperstarsEDYS: Project Superstars
EDYS: Project Superstars
 
Challenges of Setting Up Commodity or Derivatives Exchanges in Emerging Markets
Challenges of Setting Up Commodity or Derivatives Exchanges in Emerging MarketsChallenges of Setting Up Commodity or Derivatives Exchanges in Emerging Markets
Challenges of Setting Up Commodity or Derivatives Exchanges in Emerging Markets
 
فن صيد القلوب
فن صيد القلوبفن صيد القلوب
فن صيد القلوب
 
SQL injection
SQL injectionSQL injection
SQL injection
 
ECO 150 - Aula 08 - Resultados do Projeto
ECO 150 -  Aula 08 - Resultados do ProjetoECO 150 -  Aula 08 - Resultados do Projeto
ECO 150 - Aula 08 - Resultados do Projeto
 
2014年健策精密企業社會責任報告
2014年健策精密企業社會責任報告2014年健策精密企業社會責任報告
2014年健策精密企業社會責任報告
 
Ta to - TW - Kol 01
Ta to - TW - Kol 01Ta to - TW - Kol 01
Ta to - TW - Kol 01
 
CATÁLOGO - MARY KAY
CATÁLOGO - MARY KAYCATÁLOGO - MARY KAY
CATÁLOGO - MARY KAY
 
Relaunch The Product
Relaunch The ProductRelaunch The Product
Relaunch The Product
 
Curso de arranjo ian guest vol 1
Curso de arranjo  ian guest vol 1Curso de arranjo  ian guest vol 1
Curso de arranjo ian guest vol 1
 
Potable Spirits Certified Under EAS 109
Potable Spirits Certified Under EAS 109Potable Spirits Certified Under EAS 109
Potable Spirits Certified Under EAS 109
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 

Similar to 数据库持续集成

Subversion
SubversionSubversion
Subversioni7Xh
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
It基础架构的自动化编排
It基础架构的自动化编排It基础架构的自动化编排
It基础架构的自动化编排Bill Wang
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Betazhu02
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Betafulin tang
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超drewz lin
 
Web testing automation
Web testing automationWeb testing automation
Web testing automationkuozui
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Betazwxgo
 
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4twMVC
 
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC
 
01.uliweb介绍
01.uliweb介绍01.uliweb介绍
01.uliweb介绍modou li
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressAppzhoujg
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介Allen Lsy
 
基于 lucene 的站内搜索
基于 lucene 的站内搜索基于 lucene 的站内搜索
基于 lucene 的站内搜索fulin tang
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)vanadies10
 
浅析主流商业和开源Esb产品
浅析主流商业和开源Esb产品浅析主流商业和开源Esb产品
浅析主流商业和开源Esb产品nereuschen
 
价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流hizhubo
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程yiditushe
 

Similar to 数据库持续集成 (20)

Subversion
SubversionSubversion
Subversion
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
It基础架构的自动化编排
It基础架构的自动化编排It基础架构的自动化编排
It基础架构的自动化编排
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超
 
Web testing automation
Web testing automationWeb testing automation
Web testing automation
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
 
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
 
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
 
01.uliweb介绍
01.uliweb介绍01.uliweb介绍
01.uliweb介绍
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
基于 lucene 的站内搜索
基于 lucene 的站内搜索基于 lucene 的站内搜索
基于 lucene 的站内搜索
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)
 
浅析主流商业和开源Esb产品
浅析主流商业和开源Esb产品浅析主流商业和开源Esb产品
浅析主流商业和开源Esb产品
 
价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
 
敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3
 

数据库持续集成

  • 1. 数据库开发的版本控制和持续集成 Michael Zeng -------------------------------------------------- 成都研发中心 EMail : zengjingtao@91huayi.com
  • 2. You never develop code without version control, why do you develop your database without it? 代码开发流程中必不可少的版本控制机 制,在数据库开发中你用了吗?
  • 3. 我们的位置? 1. 在数据库上手工开发 2. 建模工具,直接更新到数据库 3. 建模工具,生成完整脚本进行版本控制 4. 建模工具,版本控制,持续集成
  • 6. 传统的模式 (part 3) 优点  脚本统一管理  追溯版本修改历史  半部署自动化 不足 × 升级过程繁琐 × 人工干预带来的风险 × 无法持续集成
  • 7. 数据库开发三条原则 1. Never use a shared database server for development work. 不要在共享数据库服务器上进行开发工作,避免开发人员相互覆盖彼此 所做的修改。 2. Always Have a Single, Authoritative Source For Your Schema 仅保留一份权威的Schema生成源,保证每一个人都可以用它轻松地重新 创建一个新的数据库。 3. Always Version Your Database 对数据库进行版本管理。将变化由开发传递到测试,最后到生产环境。 Scott Allen
  • 8. 什么是持续集成 持续集成(Continuous Integration)是一种软件 开发实践,即团队开发成员经常集成它们的工作。 每次集成都通过自动化的构建(包括编译,发布, 自动化测试)来验证,从而尽快地发现集成错误。 Martin Fowler
  • 9. DBCI中的几个概念 Baseline  一个或者一组脚本  所有可以从零开始生成数据库的SQL Baseline Change Set  修改必须通过脚本文件以”增量更新”实现 Change Log Set  增量是相对的  增量有唯一的标识符 Applied Change Log  记录Change Set应用的情况  避免重复运行同一个修改
  • 11. DBCI中的发布更新 Applied Change Log Update Roll Back
  • 12. 理论 VS 实现 商业产品  Red Gate 开源项目  Liquibase  Apache Maven 自力更生  Shell
  • 13. Liquibase是什么 Liquibase is an open source (Apache 2.0 Licensed), database- independent library for tracking, managing and applying database changes. It is built on a simple premise: All database changes are stored in a human readable yet trackable form and checked into source control.  Database Change Management工具  开源,轻量级  垮平台,数据库类型无关  基于XML配置  仅仅是一个框架工具
  • 14. 脚本目录结构 Baseline Replaceable Object  一个或者一组脚本 Non Replaceable  从零开始生成 Object Change Set  以”增量更新”实现 Optional  增量是相对的  增量有唯一的标识符 Applied Change Log  记录Change Set应用的情况  避免重复运行同一个修改
  • 15. Install VS Update Fresh Install Daily Update 从零开始创建一个应用, 把指定应用更新到当前版 并且更新到当前版本。 本 仅可运行一次。 可以重复运行
  • 17. Baseline.XML author + id = identifier External SQL File Set current version
  • 18. ChangeSet.XML Check current version Embedded SQL External SQL File XML Element
  • 19. Program.XML run everytime 替换SQL参数或者特殊字符
  • 20. 运行Liquibase 通过Command Line,Apache Ant, Apache Maven等多种方式 Ant调用例子
  • 21. Tips  XML文件编码建议使用UTF-8  参数替换  XML文件中可以使用动态参数(路径,文件名,等)  SQL脚本中可以使用动态参数(表空间名称,用户名称,等)  Embedded SQL  合理使用splitstatement参数  External SQL File  使用encoding参数,指明SQL脚本使用的字符编码  末尾包含/等特殊符号,运行前使用<modifySql>进行替换