<?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> &#187; Process</title>
	<atom:link href="http://palominodb.com/blog/index.php/category/process/feed/" rel="self" type="application/rss+xml" />
	<link>http://palominodb.com/blog</link>
	<description></description>
	<lastBuildDate>Sun, 08 Nov 2009 16:35:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Version Consistency</title>
		<link>http://palominodb.com/blog/2007/11/11/version-consistency/</link>
		<comments>http://palominodb.com/blog/2007/11/11/version-consistency/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 22:03:45 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://palominodb.com/blog/2007/11/11/version-consistency/</guid>
		<description><![CDATA[Everyone puts lip service to the concept of keeping versions consistent between servers but it is consistently one of the most broken best practices I see amongst my clients.  The problems with such inconsistency are legion, and I&#8217;ll point out a few here.
Mismatch between production and development:  Development environments are often neglected, particularly [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone puts lip service to the concept of keeping versions consistent between servers but it is consistently one of the most broken best practices I see amongst my clients.  The problems with such inconsistency are legion, and I&#8217;ll point out a few here.</p>
<p><strong>Mismatch between production and development:</strong>  Development environments are often neglected, particularly when it comes to OS and DBMS patches.  When this happens I consistently find myself in a catch-22 when it is time to do patching in production.  With nowhere to test a patch, you have to either go in blind and pray (never the most optimal choice) or neglect the patch, potentially retaining security vulnerabilities or bugs or limiting the access to potential performance or feature improvements.  This is especially concerning in complex environments like an Oracle RAC cluster, where patches can be tricky at best.  Of course, when working with any features outside of pure DML, you can expect occasional glitches as you introduce change, particularly when working with triggers, procedures, replication, partitioning, or any other complex feature.</p>
<p><strong>Mismatch between MySQL masters and slaves:</strong>  In MySQL, a lot of pain is taken to allow a slave&#8217;s version to be higher than the master&#8217;s.  This can be a godsend in an upgrade scenario but I wouldn&#8217;t rely on this without significant testing.  There are numerous features that may function incorrectly in such a scenario, particularly if you are using technologies that are relatively new and thus might be changing significantly between release versions, such as triggers in a 5.0.xx release.  My recommendations are simple.  If you&#8217;re running in day to day operations, you have to maintain consistency in your database versions.  If you want to use  replication as a way to do a rolling upgrade across a replicated cluster, test it thoroughly in development and make sure you test any procedures, views, triggers and functions against every possible storage engine and partitioned vs. non-partitioned tables.  If your application does DDL, then test that as well.  I can&#8217;t stress this one enough.  I&#8217;ve had clients who were plagued with replication problems that &#8220;magically&#8221; went away once we brought their RDBMS and OS versions into sync.</p>
<p><strong>Consistency between functional clusters: </strong>When I say functional cluster, I&#8217;m talking about a group of databases, usually replicated or physically clustered that support the same application component.  In high activity environments, this kind of functional partitioning can be crucial in a scaling strategy.  However, lack of discipline can cause these clusters to be built at or migrated to different versions over time. While this may not lead to isaster if your team is disciplined, at it&#8217;s best you will find your resources taxed.  You&#8217;ll need to maintain multiple server builds, you&#8217;ll need to do a lot more qa at the data access tier and will require more steps in case you need to trade hardware between functional clusters.  If you don&#8217;t have rock solid documentation and processes, new servers will be built at different versions, potentially even introduced into production with the wrong version.  There will be redo work and troubleshooting that plagues you to varying levels.</p>
<p>To recap, when it comes to the same database in various environments (dev, test, stage etc&#8230;) there is no reason to allow for version drift.  You must incorporate proper upgrade and deployment processes that, combined with discipline, will maintain that consistency.  A proper configuration database can help with this as well.  When it comes to a functional cluster, there absolutely must be consistency as well.  There is a place for version mismatch in a rolling upgrade strategy, but only here, and only with extensive testing where possible.  And finally, if there are valid reasons to have different versions across different functional clusters, be prepared for rigorous discipline and overhead in your administrative processes.</p>
]]></content:encoded>
			<wfw:commentRss>http://palominodb.com/blog/2007/11/11/version-consistency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Prototype</title>
		<link>http://palominodb.com/blog/2007/10/15/the-prototype/</link>
		<comments>http://palominodb.com/blog/2007/10/15/the-prototype/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 02:19:59 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://palominodb.com/blog/2007/10/15/the-prototype/</guid>
		<description><![CDATA[The first start-up stage I&#8217;ve worked within is the  prototype phase. Within this phase traffic is not an issue for performance or  scale, it&#8217;s about functionality. Low traffic and small datasets can hide  atrocious code quite easily. The nice thing about this stage is that you should  not have to invest [...]]]></description>
			<content:encoded><![CDATA[<div class="MsoNormal">The first start-up stage I&#8217;ve worked within is the  prototype phase. Within this phase traffic is not an issue for performance or  scale, it&#8217;s about functionality. Low traffic and small datasets can hide  atrocious code quite easily. The nice thing about this stage is that you should  not have to invest a lot of time or money into your database and instead can  focus on functionality and business development. Over-engineering at this point  can be a devastating waste of very precious resources.</p>
<p>Here are the  three criteria I would recommend focusing on:</p></div>
<div></div>
<div>1. Standards &#8211; I&#8217;m not talking about long lists of rules or apocryphal  abbreviations here; rather focus on simplicity, consistency and usability. Don&#8217;t  make decisions without asking yourself if the choice you&#8217;ve made is simple to  practice, can be done so consistently, and would be easy for a new employee to  use. Without standards, you will find that your database quickly becomes  difficult to navigate and utilize &#8211; and a headache to maintain. Important  standards include database object names, file system layouts, documentation  design and locations.</div>
<div></div>
<div>2. Backups &#8211; There is nothing more frustrating than losing days or weeks of  work. One of the key jobs of a DBA is making sure that your data can be  recovered in case of a crisis. From the beginning, you need a solid backup and  recovery process. Again, at this stage, nothing elaborate is required. It may be  as simple as a nightly dump, or you may need more frequent dumps and perhaps  even point in time recovery depending on the amount of change and number of  people making the changes. Another key factor here is actually documenting how  to perform the restores and practicing them regularly. Backups do fail and  sometimes that failure is subtle. Regular practice will help to insure a  successful recovery.</div>
<div></div>
<div>3. Documentation &#8211; As you make decisions about standards, set up processes,  start building scripts, and implement tools and management utilities you need to  document them for repeatability. Wikis are great for this, but again you must  maintain a culture of discipline in regards to documentation. Tasks should not  be completed without documentation and those responsible for doing so must be  held accountable for it. This is an excellent way to start building discipline  into the culture. As the prototype becomes operational more rigorous processes  can build on this, such as change and problem management.</div>
]]></content:encoded>
			<wfw:commentRss>http://palominodb.com/blog/2007/10/15/the-prototype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.409 seconds -->
