SlideShare a Scribd company logo
AGILE DATABASE
 DEVELOPMENT
     WITH


     Tim Berglund
      June, 2009
TIM BERGLUND
Agile Database Development with Liquibase
Agile Database Development with Liquibase
Agile Database Development with Liquibase
Agile Database Development with Liquibase
Agile Database Development with Liquibase
Agile Database Development with Liquibase
Agile Database Development with Liquibase
Agile Database Development with Liquibase
WE BELIEVE CODE
   CHANGES
WE BELIEVE CODE
   CHANGES
Agile Database Development with Liquibase
WE ACT LIKE THE
DATABASE DOESN’T
WE ACT LIKE THE
DATABASE DOESN’T
TERMINAL
MALADAPTION
EMBALMING
Agile Database Development with Liquibase
WON’T DIE
NOT REALLY ALIVE
CURSES THE DBA
WHO CHANGES IT
WE WILL
BREAK
 THE
CURSE
AGILE DATABASE
 DEVELOPMENT
Refactoring



                                  Evolutionary
Automated
                                      Data
 Testing                            Modeling



                  Agile
                Database
               Development




     Source
                              Sandboxes
     Control
REFACTORING
REFACTORING
REFACTORING

   This term
occasionally gets
    abused!
REFACTORING
   A disciplined way to
make small changes to your
source code to improve its
 design, making it easier to
         work with.
REFACTORING

Not adding
 features!
REFACTORING

Not fixing bugs!
REFACTORING
 Opportunistically
improving design to
  accommodate
     change.
DATABASE REFACTORING


       A simple change to a
 database schema that improves
its design while retaining both its
   behavioral and informational
            semantics.
EVOLUTIONARY
DATA MODELING
EVOLUTIONARY
  DATA MODELING

NOT TRYING TO “GET IT RIGHT UP
          FRONT.”
EVOLUTIONARY
 DATA MODELING

MAYBE SOME BIG THOUGHTS AT
          FIRST
EVOLUTIONARY
  DATA MODELING

BUILD THE SIMPLEST THING THAT
CAN POSSIBLY WORK...EVERY DAY
DATABASE TESTS


  TDD IN THE DB
DATABASE TESTS
DATABASE TESTS

 STORED PROCEDURES
DATABASE TESTS

 STORED PROCEDURES
     SQLUNIT
DATABASE TESTS

 STORED PROCEDURES
     SQLUNIT
      DBUNIT
DATABASE TESTS

 STORED PROCEDURES
     SQLUNIT
      DBUNIT
  CUSTOM HYBRIDS
SOURCE CONTROL
SOURCE CONTROL




LIKE MOTHER TAUGHT YOU
SOURCE CONTROL
SOURCE CONTROL

          DDL
EXTRACT/MIGRATION SCRIPTS
     REFERENCE DATA
 STORED PROCS/TRIGGERS
SANDBOXES
Agile Database Development with Liquibase
Agile Database Development with Liquibase
COMMAND-LINE TOOL
COMMAND-LINE TOOL
    JAVA/JDBC
COMMAND-LINE TOOL
    JAVA/JDBC
  CROSS-PLATFORM
COMMAND-LINE TOOL
        JAVA/JDBC
     CROSS-PLATFORM
ANT, MAVEN, SPRING, GRAILS
Agile Database Development with Liquibase
CHANGELOG
CHANGELOG
COMMANDS
CHANGELOG
    COMMANDS
MIGRATION SCENARIOS
CHANGELOG
CHANGELOG

 SQL IN XML
CHANGELOG

   SQL IN XML
COHERENT GROUPS OF
   OPERATIONS
CHANGELOG

    SQL IN XML
COHERENT GROUPS OF
   OPERATIONS
TRACKED IN DATABASE
CHANGELOG
	   <changeSet author="tlberglund (generated)" id="1236660747556-11">
	   	   <createTable tableName="scshoppingcart">
	   	   	   <column autoIncrement="true" name="id" type="INT">
	   	   	   	    <constraints nullable="false"/>
	   	   	   </column>
	   	   	   <column name="userid" type="INT">
	   	   	   	    <constraints nullable="false"/>
	   	   	   </column>
	   	   	   <column name="lastmodified" type="DATETIME"/>
	   	   	   <column name="name" type="VARCHAR(50)"/>
	   	   </createTable>
	   </changeSet>

	   <changeSet author="tlberglund" id="spot-1-1-2">
	   	   <renameTable oldTableName="scscrubrecordwarehouse"
                     newTableName="scrub_record_log" />
	   </changeSet>
LIQUIBASE
COMMANDS
LIQUIBASE
   COMMANDS


generateChangeLog
LIQUIBASE
 COMMANDS


changeLogSync
LIQUIBASE
COMMANDS


 update
LIQUIBASE
COMMANDS


   tag
LIQUIBASE
COMMANDS


 rollback
LIQUIBASE
COMMANDS


   diff
DEMO
AND WE’RE BACK
Refactoring



                                  Evolutionary
Automated
                                      Data
 Testing                            Modeling



                  Agile
                Database
               Development




     Source
                              Sandboxes
     Control
CULTIVATING THE
 BROWNFIELD
LEGACY ENTERPRISE
      APP
NEW GRAILS
 HOTNESS
HARD CUTOVER
CREATIVE ORM
  MAPPINGS
WITHERING ON THE
VINE
BROWNFIELD DATA
  INTEGRATION
BROWNFIELD DATA
  INTEGRATION
 TIME ZERO MIGRATION
BROWNFIELD DATA
  INTEGRATION
 TIME ZERO MIGRATION
BROWNFIELD
  TESTING
BROWNFIELD
   TESTING


INTEGRATION TEST DATA
BROWNFIELD
  TESTING
BROWNFIELD
  TESTING


T0 MIGRATION SCRIPTS
BROWNFIELD
  TESTING
THE
CURSE IS
BROKEN
THANK YOU!

TIM BERGLUND
AUGUST TECHNOLOGY GROUP, LLC
http://www.augusttechgroup.com
tim.berglund@augusttechgroup.com
@tlberglund
PHOTO CREDITS
HAMMER SHATTERING GLASS: HTTP://WWW.FLICKR.COM/PHOTOS/WHISPERWOLF/3486270713
DODO: HTTP://WWW.INTERNATIONALDOVESOCIETY.COM/MISCSPECIES/DODO.HTM
EMBALMING: HTTP://LIBRARY.THINKQUEST.ORG/C0116982/HTML%20PAGE%20FOLDER/
HMUMMIFICATION.HTM
ATTACKING MUMMY: HTTP://WWW.FLICKR.COM/PHOTOS/ROONBABOON/292393932/
CREEPY MUMMY HEAD: HTTP://WWW.FLICKR.COM/PHOTOS/DR-INI/446311713/
MARTIN FOWLER: HTTP://WWW.FLICKR.COM/PHOTOS/PRAGDAVE/173640462/
SCOTT AMBLER: HTTP://WWW.AMBYSOFT.COM/SCOTTAMBLER.HTML
BRENDEN FRASER: HTTP://SCRAPETV.COM/NEWS/NEWS%20PAGES/ENTERTAINMENT/UNIVERSAL-FIRE-
ACCIDENTAL-NEW-MUMMY-MOVIE-DELIBERATE-SCRAPE-TV-THE-WORLD-ON-YOUR-SIDE.HTML
SAND: HTTP://WWW.FLICKR.COM/PHOTOS/LEVIATHOR/207625319/
MOTHER AND CHILD: HTTP://WWW.FLICKR.COM/PHOTOS/PATRICK_Q/268149208/
BROWN FIELD: HTTP://WWW.FLICKR.COM/PHOTOS/ARTUR02/471094378/
JALOPY: HTTP://WWW.FLICKR.COM/PHOTOS/DRAGONFLEYE/3246153/
JALOPY ON RT 66: HTTP://WWW.FLICKR.COM/PHOTOS/EVOETSCH/2436023218/
PIMPMOBILE: HTTP://WWW.FLICKR.COM/PHOTOS/AIRGAP/1053594933/
JUNKED JALOPY: HTTP://WWW.FLICKR.COM/PHOTOS/JABOOBIE/61014658/
PAINTING CAR: HTTP://WWW.FLICKR.COM/PHOTOS/GARETHJMSAUNDERS/2066690016/

More Related Content

What's hot (20)

PPTX
Successful DB migrations with Liquibase
Illia Seleznov
 
PPTX
Liquibase for java developers
Illia Seleznov
 
PPTX
Liquibase case study
Vivek Dhayalan
 
PPTX
Liquibase
Roman Uholnikov
 
PPTX
Li liq liqui liquibase
Yoram Michaeli
 
ODP
Liquibase & Flyway @ Baltic DevOps
Andrei Solntsev
 
PPTX
Database Change Management as a Service
Andrew Solomon
 
ODP
Handling Database Deployments
Mike Willbanks
 
PDF
Liquibase - Open Source version control for your database
Blaine Carter
 
PPTX
Flyway: The agile database migration framework for Java
Axel Fontaine
 
PPTX
Liquidating database frustrations with liquibase
Paul Churchward
 
PDF
Database migration with flyway
Jonathan Holloway
 
PDF
Database migrations with Flyway and Liquibase
Lars Östling
 
PPTX
Getting started with agile database migrations for java flywaydb
Girish Bapat
 
PDF
RESTFul development with Apache sling
Sergii Fesenko
 
PDF
MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015
Dave Stokes
 
PPT
3.2\9 SSIS 2008R2_Training - ControlFlow Tasks
Pramod Singla
 
PPTX
Advance java session 5
Smita B Kumar
 
PDF
SQLite 3
Scott MacVicar
 
PDF
Database Configuration for Maximum SharePoint 2010 Performance
Edwin M Sarmiento
 
Successful DB migrations with Liquibase
Illia Seleznov
 
Liquibase for java developers
Illia Seleznov
 
Liquibase case study
Vivek Dhayalan
 
Liquibase
Roman Uholnikov
 
Li liq liqui liquibase
Yoram Michaeli
 
Liquibase & Flyway @ Baltic DevOps
Andrei Solntsev
 
Database Change Management as a Service
Andrew Solomon
 
Handling Database Deployments
Mike Willbanks
 
Liquibase - Open Source version control for your database
Blaine Carter
 
Flyway: The agile database migration framework for Java
Axel Fontaine
 
Liquidating database frustrations with liquibase
Paul Churchward
 
Database migration with flyway
Jonathan Holloway
 
Database migrations with Flyway and Liquibase
Lars Östling
 
Getting started with agile database migrations for java flywaydb
Girish Bapat
 
RESTFul development with Apache sling
Sergii Fesenko
 
MySQL Workbench and Visual Explain -- RMUG Feb 19th 2015
Dave Stokes
 
3.2\9 SSIS 2008R2_Training - ControlFlow Tasks
Pramod Singla
 
Advance java session 5
Smita B Kumar
 
SQLite 3
Scott MacVicar
 
Database Configuration for Maximum SharePoint 2010 Performance
Edwin M Sarmiento
 

Viewers also liked (16)

KEY
Database Refactoring With Liquibase
Tim Berglund
 
PPTX
Database Migrations with Gradle and Liquibase
Dan Stine
 
PDF
Database Change Management
Dominik Hirt
 
PDF
Introduction to AngularJS
Aldo Pizzagalli
 
PDF
Mini Training Flyway
Betclic Everest Group Tech Team
 
PDF
The Art of AngularJS in 2015 - Angular Summit 2015
Matt Raible
 
PDF
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Stephan Kaps
 
PPTX
Single Page Application (SPA) using AngularJS
M R Rony
 
PPTX
Introduction to Angularjs
Manish Shekhawat
 
PDF
29 Essential AngularJS Interview Questions
Arc & Codementor
 
PPT
Ikilemeler2
yardimt
 
PDF
Rw Newsletter24
sturmstories
 
PPTX
9 Immutable Laws of Social Media in action: Guerrilla Video, Video Plus Socia...
Gilbert Direct Marketing, Inc.
 
PPT
The Responsibility of Business
Jeremy Williams
 
PPTX
Investing for the Smart City: Five Points for Tri-City Education Leaders to C...
Jeremy Williams
 
Database Refactoring With Liquibase
Tim Berglund
 
Database Migrations with Gradle and Liquibase
Dan Stine
 
Database Change Management
Dominik Hirt
 
Introduction to AngularJS
Aldo Pizzagalli
 
Mini Training Flyway
Betclic Everest Group Tech Team
 
The Art of AngularJS in 2015 - Angular Summit 2015
Matt Raible
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Stephan Kaps
 
Single Page Application (SPA) using AngularJS
M R Rony
 
Introduction to Angularjs
Manish Shekhawat
 
29 Essential AngularJS Interview Questions
Arc & Codementor
 
Ikilemeler2
yardimt
 
Rw Newsletter24
sturmstories
 
9 Immutable Laws of Social Media in action: Guerrilla Video, Video Plus Socia...
Gilbert Direct Marketing, Inc.
 
The Responsibility of Business
Jeremy Williams
 
Investing for the Smart City: Five Points for Tri-City Education Leaders to C...
Jeremy Williams
 
Ad

Similar to Agile Database Development with Liquibase (20)

PDF
Gaelyk - Web Apps In Practically No Time
Saltmarch Media
 
PPTX
Evolutionary database design
Salehein Syed
 
PPT
Evolutionary Database Design
Andrei Solntsev
 
PDF
Database Refactoring
Anton Keks
 
PDF
Ringing the Changes for Change Management
Embarcadero Technologies
 
PPTX
Schema migration in agile environmnets
Vivek Dhayalan
 
PPT
Refactoring database
Jiang Zhu
 
PDF
Database Change Management | Embarcadero Change Manager
Michael Findling
 
PPT
Getting Unstuck: Working with Legacy Code and Data
Cory Foy
 
PDF
Database Change Management | Change Manager from Embarcadero Technologies
Michael Findling
 
PPTX
Evolutionary database design
David Price
 
PPTX
Flyway (33rd Degree)
Axel Fontaine
 
PDF
Migrating from PostgreSQL to MySQL Without Downtime
Matt Graham
 
PDF
javazone 2014
Rikard Thulin
 
PDF
L Migrator Pres
Brian Loomis
 
PPT
Evolutionary db development
Open Party
 
PDF
Change Manager Datasheet | Database Change Management
Embarcadero Technologies
 
PPTX
Nosql
Brandon Byars
 
KEY
Sane SQL Change Management with Sqitch
David Wheeler
 
PDF
Delivering changes for applications and databases
Eduardo Piairo
 
Gaelyk - Web Apps In Practically No Time
Saltmarch Media
 
Evolutionary database design
Salehein Syed
 
Evolutionary Database Design
Andrei Solntsev
 
Database Refactoring
Anton Keks
 
Ringing the Changes for Change Management
Embarcadero Technologies
 
Schema migration in agile environmnets
Vivek Dhayalan
 
Refactoring database
Jiang Zhu
 
Database Change Management | Embarcadero Change Manager
Michael Findling
 
Getting Unstuck: Working with Legacy Code and Data
Cory Foy
 
Database Change Management | Change Manager from Embarcadero Technologies
Michael Findling
 
Evolutionary database design
David Price
 
Flyway (33rd Degree)
Axel Fontaine
 
Migrating from PostgreSQL to MySQL Without Downtime
Matt Graham
 
javazone 2014
Rikard Thulin
 
L Migrator Pres
Brian Loomis
 
Evolutionary db development
Open Party
 
Change Manager Datasheet | Database Change Management
Embarcadero Technologies
 
Sane SQL Change Management with Sqitch
David Wheeler
 
Delivering changes for applications and databases
Eduardo Piairo
 
Ad

More from Tim Berglund (9)

PDF
Distributed Systems In One Lesson
Tim Berglund
 
PDF
NoSQL Smackdown!
Tim Berglund
 
PDF
Decision Making in Software Teams
Tim Berglund
 
PDF
Then our buildings shape us 10 minutes
Tim Berglund
 
PDF
Complexity Theory and Software Development
Tim Berglund
 
KEY
Gaelyk: Lightweight Groovy on the Google App Engine
Tim Berglund
 
KEY
Slaying The Legacy Dragon: Practical Lessons in Replacing Old Software
Tim Berglund
 
KEY
Test First Refresh Second: Test-Driven Development in Grails
Tim Berglund
 
KEY
Test First, Refresh Second: Web App TDD in Grails
Tim Berglund
 
Distributed Systems In One Lesson
Tim Berglund
 
NoSQL Smackdown!
Tim Berglund
 
Decision Making in Software Teams
Tim Berglund
 
Then our buildings shape us 10 minutes
Tim Berglund
 
Complexity Theory and Software Development
Tim Berglund
 
Gaelyk: Lightweight Groovy on the Google App Engine
Tim Berglund
 
Slaying The Legacy Dragon: Practical Lessons in Replacing Old Software
Tim Berglund
 
Test First Refresh Second: Test-Driven Development in Grails
Tim Berglund
 
Test First, Refresh Second: Web App TDD in Grails
Tim Berglund
 

Recently uploaded (20)

PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Digital Circuits, important subject in CS
contactparinay1
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 

Agile Database Development with Liquibase

Editor's Notes

  • #3: I&amp;#x2019;m your presenter.
  • #4: I&amp;#x2019;m a Java developer.
  • #5: I work with a lot of open source technologies.
  • #6: I haven&amp;#x2019;t written a lot of Java in the past year. Mostly these days I write Groovy.
  • #7: I participate in the local development community by serving on the boards of www.denveropensource.org and www.iasadenver.org.
  • #8: The August Technology Group is my consulting firm.
  • #9: As software developers and architects, our worlds are filled with data.
  • #10: Unfortunately, the data is not always in the condition we&amp;#x2019;d like. We try to do a good job structuring it, but the reality is that we often fail, and even when we succeed, the business changes enough so that even our successes are short-lived.
  • #11: Our tool sets and processes have developed to deal expertly with rapidly changing code.
  • #12: Our tool sets and processes have developed to deal expertly with rapidly changing code.
  • #13: The same tools and practices have not been applied to data. Leading to one of two problems...
  • #14: The same tools and practices have not been applied to data. Leading to one of two problems...
  • #15: Will it die? It is said of evolutionary systems that things that fail to adapt to change die out. If only this were the case with the enterprise database...
  • #16: Rather than going extinct, the production DBAs surround it like priests, carefully filling it with embalming fluid and wrapping it in linen strips. (And possibly putting some operations personnel in the tomb to serve the database in the afterlife.)
  • #17: Inability to change and overprotection lead us to this dread antipattern.
  • #18: There are long-lived Enterprise applications that rely on it, so it can&amp;#x2019;t just go away.
  • #19: It isn&amp;#x2019;t really alive either, because business needs are constantly changing, but the database can&amp;#x2019;t change with them.
  • #20: At least the production DBAs seem to think so!
  • #21: We&amp;#x2019;ll figure out how to manage changes to the database such that we can make them with confidence in a way that brings the best of developer tools to bear and is relatively friendly to DBA workflows. We&amp;#x2019;ll do this with a mindset and a tool.
  • #22: The fix is what Scott Ambler calls &amp;#x201C;evolutionary [or agile] database development.&amp;#x201D; This consists of five components.
  • #24: Martin sez...
  • #25: Martin sez...
  • #30: Scott sez.... Code refactorings are really only concerned about behavior. DBs have behavior (stored procs, triggers, etc.) but also information. The database must say the same thing in the same way after the refactoring.
  • #31: These are two mistakes here: one is thinking we&amp;#x2019;re smart enough to do all this designing correctly at the outset&amp;#x2014;we&amp;#x2019;re not. The other is thinking that the database&amp;#x2019;s business context is a static thing&amp;#x2014;it isn&amp;#x2019;t. There is no &amp;#x201C;right&amp;#x201D; up front, because requirements will change constantly.
  • #32: Which doesn&amp;#x2019;t mean we can&amp;#x2019;t do a couple of days of designing at first; we can. It makes sense to try to anticipate what we can and make big, hard-to-change commitments correctly. We always expect change, though.
  • #34: TDD adoption in software development is low enough, but it is virtually unheard of in database development. The tooling lags behind and the expertise is singularly rare.
  • #35: There are ways to do it. The tools aren&amp;#x2019;t what they are for TDD of code, but there are options.
  • #36: There are ways to do it. The tools aren&amp;#x2019;t what they are for TDD of code, but there are options.
  • #37: There are ways to do it. The tools aren&amp;#x2019;t what they are for TDD of code, but there are options.
  • #38: There are ways to do it. The tools aren&amp;#x2019;t what they are for TDD of code, but there are options.
  • #39: Bring all the knowledge, practices, and advantages of software source control to the database. Simply control all those text files in SVN or Git like you normally would. This practice is old hat.
  • #40: Every database artifact goes in to the repository.
  • #41: Developers need a place to deploy refactorings when they&amp;#x2019;re trying to get their tests to pass. This must be a local database not used by any other team member or system.
  • #42: If we learn how to refactor databases from Ambler and Sandalage, Liquibase is the tool that makes it easy. It is an XML-based love poem to Scott Ambler.
  • #43: Liquibase is fundamentally a command-line tool written in Java. It uses JDBC to communicate with the database, and can coexist well in a non-Java shop. I can be invoked from popular open-source build tools and frameworks.
  • #44: Liquibase is fundamentally a command-line tool written in Java. It uses JDBC to communicate with the database, and can coexist well in a non-Java shop. I can be invoked from popular open-source build tools and frameworks.
  • #45: Liquibase is fundamentally a command-line tool written in Java. It uses JDBC to communicate with the database, and can coexist well in a non-Java shop. I can be invoked from popular open-source build tools and frameworks.
  • #46: Liquibase is fundamentally a command-line tool written in Java. It uses JDBC to communicate with the database, and can coexist well in a non-Java shop. I can be invoked from popular open-source build tools and frameworks.
  • #47: We&amp;#x2019;ll consider three aspects of Liquibase. How it stores the schema, how it interacts with the database, and how to use it in some real-world scenarios.
  • #48: We&amp;#x2019;ll consider three aspects of Liquibase. How it stores the schema, how it interacts with the database, and how to use it in some real-world scenarios.
  • #49: We&amp;#x2019;ll consider three aspects of Liquibase. How it stores the schema, how it interacts with the database, and how to use it in some real-world scenarios.
  • #50: Must we rewrite our SQL in XML? We must. It&amp;#x2019;s painful and unappetizing, but worth it! Also, there&amp;#x2019;s a Grails plugin called Autobase that lets us do it in nice Groovy Builder syntax, which is preferable. We won&amp;#x2019;t address Autobase in detail here, but it&amp;#x2019;s worth looking in to.
  • #51: Must we rewrite our SQL in XML? We must. It&amp;#x2019;s painful and unappetizing, but worth it! Also, there&amp;#x2019;s a Grails plugin called Autobase that lets us do it in nice Groovy Builder syntax, which is preferable. We won&amp;#x2019;t address Autobase in detail here, but it&amp;#x2019;s worth looking in to.
  • #52: Must we rewrite our SQL in XML? We must. It&amp;#x2019;s painful and unappetizing, but worth it! Also, there&amp;#x2019;s a Grails plugin called Autobase that lets us do it in nice Groovy Builder syntax, which is preferable. We won&amp;#x2019;t address Autobase in detail here, but it&amp;#x2019;s worth looking in to.
  • #53: The changelog is a script that builds your schema one DDL statement at a time. Each changeSet is converted into a dialect-specific SQL statement and is executed in the database, then marked as complete in a log table.
  • #54: Extracts the database&amp;#x2019;s metadata and generates a changelog. This is the first step is getting started on a database that already exists.
  • #55: Since Liquibase tracks the status of all changesets in the changelog, we&amp;#x2019;ll need to tell it that our newly extracted changelog is in sync with the actual database. This command usually shouldn&amp;#x2019;t be executed except as the second step getting started with the tool.
  • #56: Plays any new changeSets in the changeLog against the database. This is the statement you&amp;#x2019;ll use the most during evolutionary database development with Liquibase.
  • #57: Marks the database for a future rollback.
  • #58: Rolls back changesets to given tag.
  • #59: Supposed to document the differences between the database and the changelog. I&amp;#x2019;ve not had good luck with this so far against MySQL and SQLServer databases.
  • #63: Evolutionary Database Development is not controversial among software developers, because we are largely persuaded of the core propositions. Moreover, Liquibase seems like a reasonable tool to help. Now let&amp;#x2019;s talk about some practices to put in place in a brownfield effort.
  • #64: People are using it, it works, it has literally years of knowledge and business process encoded in it. It&amp;#x2019;s also ugly and outdated, and its schema seems to have been built by the DBA Club after school. But you&amp;#x2019;re replacing it, with Grails...!