<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Liquibase &#187; Refactoring</title>
	<atom:link href="http://blog.liquibase.org/category/refactoring/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.liquibase.org</link>
	<description>Database Change Management: The Blog</description>
	<lastBuildDate>Tue, 11 Oct 2011 05:34:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Martin Fowler on Incremental Data Migration</title>
		<link>http://blog.liquibase.org/2008/07/martin-fowler-on-incremental-data-migration.html</link>
		<comments>http://blog.liquibase.org/2008/07/martin-fowler-on-incremental-data-migration.html#comments</comments>
		<pubDate>Thu, 10 Jul 2008 22:20:20 +0000</pubDate>
		<dc:creator>Nathan Voxland</dc:creator>
				<category><![CDATA[Refactoring]]></category>

		<guid isPermaLink="false">http://blog.liquibase.org/?p=49</guid>
		<description><![CDATA[Martin Fowler makes good points in his Incremental Migration Bliki post. Data migration is easy to push off or forget, and can often kill an otherwise great release&#8211;especially when valuable historical data gets lost due to a bad script. I think reason many people put off data migration scripts is because they mistakenly think that [...]]]></description>
			<content:encoded><![CDATA[<p>Martin Fowler makes good points in his <a href="http://martinfowler.com/bliki/IncrementalMigration.html" target="_blank">Incremental Migration</a> Bliki post. Data migration is easy to push off or forget, and can often kill an otherwise great release&#8211;especially when valuable historical data gets lost due to a bad script.</p>
<p>I think reason many people put off data migration scripts is because they mistakenly think that they are for release day only. In reality, however, data migration is needed throughout the development process including updating developer databases and migrating integration test data.</p>
<p>Doing your data migrations incrementally and appending to your database change log on every refactoring will help you catch migration logic errors early and keep everyone&#8217;s databases in sync.</p>
<p>To keep up with your database migration scripts, you need to use the update your test/code/test cycle to:</p>
<ol>
<li>Write Test</li>
<li>Run Test</li>
<li>Code Change</li>
<li style="font-weight: bold;">Append database changes to <a href="http://www.liquibase.org/manual/databasechangelog" target="_blank">change log</a></li>
<li style="font-weight: bold;">Run <strong class="highlighted0">LiquiBase</strong> to update database</li>
<li>Run Test, See Green</li>
</ol>
<p>Making no database changes outside of your change log script and dev cycle will ensure that no changes get forgotten and that there are no differences between what happened on the developer&#8217;s database and what happens on other developer&#8217;s and production databases.</p>
<p>To integrate <strong class="highlighted0">LiquiBase</strong> into your build process, there are <a href="http://www.liquibase.org/manual/ant" target="_blank">Ant</a>, and <a href="http://www.liquibase.org/manual/maven" target="_blank">Maven</a> front-ends available. This will allow you to migrate your integration tests data sets before executing them and allow you to find errors in your database update logic with each run.<img src="http://feeds.feedburner.com/%7Er/liquibase/%7E4/329863436" alt="" width="1" height="1" /></p>
<p>[Note: This post was re-published due to Blog hosting change]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.liquibase.org/2008/07/martin-fowler-on-incremental-data-migration.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

