<?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>Grep My Mind &#187; mysql</title>
	<atom:link href="http://www.grepmymind.com/topics/web-development/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.grepmymind.com</link>
	<description>Wonder what’s on my mind? Now you know.</description>
	<lastBuildDate>Thu, 11 Jun 2009 20:00:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>How FriendFeed uses MySQL to store schema-less data &#8211; SF MySQL Meetup April 6th, 2009</title>
		<link>http://www.grepmymind.com/2009/03/28/how-friendfeed-uses-mysql-to-store-schema-less-data-sf-mysql-meetup-april-6th-2009/</link>
		<comments>http://www.grepmymind.com/2009/03/28/how-friendfeed-uses-mysql-to-store-schema-less-data-sf-mysql-meetup-april-6th-2009/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 20:40:29 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Bret Taylor]]></category>
		<category><![CDATA[FriendFeed]]></category>
		<category><![CDATA[SF MySQL Meetup]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=326</guid>
		<description><![CDATA[When: 6:30pm Monday April 6th, 2009 Where: CBS Interactive &#8211; 235 2nd Street San Francisco, CA RSVP: How FriendFeed uses MySQL to store schema-less data Join the SF MySQL Meetup for our April meetup where Bret Taylor from FriendFeed talks about how they store their data in a &#34;schema-less&#34; system on top of MySQL. FriendFeed [...]]]></description>
			<content:encoded><![CDATA[<p>When: 6:30pm Monday April 6th, 2009<br />
Where: CBS Interactive &#8211; 235 2nd Street San Francisco, CA<br />
RSVP: <a href="http://mysql.meetup.com/30/calendar/9862949/">How FriendFeed uses MySQL to store schema-less data</a></p>
<hr />
<p>Join the <a href="http://mysql.meetup.com/30/">SF MySQL Meetup</a> for our April meetup where <a href="http://bret.appspot.com/" target="_blank">Bret Taylor</a> from <a href="http://friendfeed.com" target="_blank">FriendFeed</a> <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" target="_blank">talks about how they store their data in a &quot;schema-less&quot; system on top of MySQL</a>.  FriendFeed stores over 250 million entries and a bunch of other data, from comments and &quot;likes&quot; to friend lists.</p>
<p>As the database has grown, they have tried to iteratively deal with the scaling issues that come with rapid growth. They did the typical things, like using read slaves and <a href="http://en.wikipedia.org/wiki/Memcached" target="_blank">memcache</a> to increase read throughput and <a href="http://en.wikipedia.org/wiki/Sharding" target="_blank">sharding</a> our database to improve write throughput. However, as FriendFeed grew, scaling their existing features to accommodate more traffic turned out to be much less of an issue than adding new features.</p>
<p>In particular, making schema changes or adding indexes to a database with more than 10 &#8211; 20 million rows completely locks the database for hours at a time.  After some deliberation, FriendFeed decided to implement a &quot;schema-less&quot; storage system on top of MySQL rather than use a completely new storage system. This talk attempts to describe the high-level details of the system.</p>
<p><span id="more-326"></span></p>
<hr />
<p>Bret Tayler is one of the founders of FriendFeed.com.  Before starting FriendFeed, he was a Group Product Manager at Google, responsible for Google&#8217;s developer products. Before that, he launched Google Maps and Google Local, and before that he worked on Google&#8217;s crawling and indexing infrastructure.</p>
<hr />
Agenda:<br />
6:30 &#8211; 7:15 &#8212; Doors open/general socializing &amp; food provided by Sun Startup Essentials<br />
7:15 &#8211; 8:30 &#8212; Main presentation by Bret Taylor from FriendFeed<br />
8:30 &#8211; 9:00 &#8212; Main presentation Q&amp;A<br />
9:00 &#8211; 10:00 &#8212; General discussion/Q&amp;A/networking/etc.<br />
10:00ish &#8212; end of group</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2009/03/28/how-friendfeed-uses-mysql-to-store-schema-less-data-sf-mysql-meetup-april-6th-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing the Tungsten Replicator for MySQL &#8211; SF MySQL Meetup Feb 2nd, 2009</title>
		<link>http://www.grepmymind.com/2009/01/24/introducing-the-tungsten-replicator-for-mysql-sf-mysql-meetup-feb-2nd-2009/</link>
		<comments>http://www.grepmymind.com/2009/01/24/introducing-the-tungsten-replicator-for-mysql-sf-mysql-meetup-feb-2nd-2009/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 18:04:15 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[meetup]]></category>
		<category><![CDATA[mysql meetup]]></category>
		<category><![CDATA[Robert Hodges]]></category>
		<category><![CDATA[Tungsten Replicator]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=285</guid>
		<description><![CDATA[Almost everyone I&#8217;ve ever talked to about MySQL has some complaint or another about its replication.  So when Robert Hodges, CTO of Continuent, offered to speak about the  Tungsten Replicator open source project at the February 2nd SF MySQL meetup I was all for it!  Now I know what you are thinking&#8230; &#8220;Not another sales [...]]]></description>
			<content:encoded><![CDATA[<p>Almost everyone I&#8217;ve ever talked to about <a href="http://mysql.com">MySQL</a> has some complaint or another about its <a href="http://en.wikipedia.org/wiki/Database_replication">replication</a>.  So when <a href="http://scale-out-blog.blogspot.com/">Robert Hodges</a>, CTO of <a href="http://continuent.com">Continuent</a>, <a href="http://scale-out-blog.blogspot.com/2009/01/tungsten-replicator-presentation-on-2.html">offered to speak</a> about the  <a href="http://www.continuent.com/community/tungsten-replicator">Tungsten Replicator</a> open source project at the <a href="http://mysql.meetup.com/30/calendar/9455586/">February 2nd SF MySQL meetup</a> I was all for it!  Now I know what you are thinking&#8230; &#8220;Not another sales pitch!&#8221;  But have no fear, Robert is one hell of a smart guy and is much more of a techie than a CTO (in a good way).  I remember one sales call where Robert came to CNET to talk about Continuent&#8217;s clustering software and we ended up spending more time talking databases in general than about the product.  <img src='http://www.grepmymind.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So if you&#8217;re in the SF area on Monday Feb 2nd, 2009, stop by the <a href="http://cbsinteractive.com">CBSi</a> building and listen in.</p>
<hr />When: 6:30pm Monday Feb 2nd, 2009<br />
Where: CBSi &#8211; <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=235+2nd+Street,+San+Francisco,+CA&amp;sll=37.0625,-95.677068&amp;sspn=46.946584,114.257812&amp;ie=UTF8&amp;z=16">235 2nd Street San Francisco, CA</a><br />
RSVP: <a href="http://mysql.meetup.com/30/calendar/9455586/">http://mysql.meetup.com/30/calendar/9455586/</a></p>
<hr />Description from the <a href="http://mysql.meetup.com/30/">SF MySQL Meetup</a> <a href="http://mysql.meetup.com/30/calendar/9455586/">calendar</a>:</p>
<p>Tungsten Replicator is a new open source project for database replication. It offers MySQL to Oracle replication, robust handling of master failures, extremely flexible topologies, and an extensible architecture that allows you to add your own replication features if you don’t find them there already. I’ll describe why MySQL needs more replication, show the product architecture, describe some of the problems it solves, and demonstrate the replicator in action. Finally, we’ll play “stump the chump” where you can present your replication problem and I’ll describe how our replicator handles it. Whether you have a tricky replication problem or are just curious about the subject, please join us. This is a very technical presentation that should be of interest to all true MySQL fans.</p>
<p>More information on Tungsten Replicator: <a href="http://www.continuent.com/community/tungsten-replicator">http://www.continuent.com/community/tungsten-replicator</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2009/01/24/introducing-the-tungsten-replicator-for-mysql-sf-mysql-meetup-feb-2nd-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scaling MySQL powered Web Sites by Sharding and Replication &#8211; SF MySQL Meetup Nov 2008</title>
		<link>http://www.grepmymind.com/2008/10/23/scaling-mysql-powered-web-sites-by-sharding-and-replication-sf-mysql-meetup-nov-2008/</link>
		<comments>http://www.grepmymind.com/2008/10/23/scaling-mysql-powered-web-sites-by-sharding-and-replication-sf-mysql-meetup-nov-2008/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 23:28:45 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql meetup]]></category>
		<category><![CDATA[peter zaitsev]]></category>
		<category><![CDATA[replication.]]></category>
		<category><![CDATA[sharding]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=87</guid>
		<description><![CDATA[Peter Zaitsev will be giving his excellent presentation &#8220;Scaling MySQL powered Web Sites by Sharding and Replication&#8221; to the upcoming SF MySQL 6:00pm on November 3rd @ the CBS Interactive (formerly CNET Networks) building in SOMA San Francisco (235 2nd St). RSVP here: http://mysql.meetup.com/30/calendar/8912109/ Description from the 2008 Velocity conference: When your application grows beyond [...]]]></description>
			<content:encoded><![CDATA[<div class="D_boxsection">
<p><a href="http://www.mysqlperformanceblog.com/about/" target="_blank">Peter Zaitsev</a> will be giving his excellent presentation &#8220;Scaling MySQL powered Web Sites by Sharding and Replication&#8221; to the upcoming SF MySQL 6:00pm on November 3rd @ the <a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;time=&amp;date=&amp;ttype=&amp;q=235+2nd+St,+San+Francisco,+CA+94105&amp;sll=37.0625,-95.677068&amp;sspn=28.444641,57.65625&amp;ie=UTF8&amp;ll=37.786038,-122.397265&amp;spn=0.003455,0.007038&amp;z=18&amp;om=1" target="_blank">CBS Interactive</a> (formerly CNET Networks) building in SOMA San Francisco (<a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;time=&amp;date=&amp;ttype=&amp;q=235+2nd+St,+San+Francisco,+CA+94105&amp;sll=37.0625,-95.677068&amp;sspn=28.444641,57.65625&amp;ie=UTF8&amp;ll=37.786038,-122.397265&amp;spn=0.003455,0.007038&amp;z=18&amp;om=1" target="_blank">235 2nd St</a>).</p>
<p>RSVP here: <a href="http://mysql.meetup.com/30/calendar/8912109/">http://mysql.meetup.com/30/calendar/8912109/</a></p>
<p>Description from the <a href="http://en.oreilly.com/velocity2008/public/schedule/detail/3163" target="_blank">2008 Velocity</a> conference:<br />
When your application grows beyond capacity of a single MySQL server there are few ways to scale, with most typical being Replication and Sharding.</p>
<p>In this presentation you will learn how, depending on your application performance scalability and high availability goals, you can choose what proper scaling strategy will be good for you.</p>
<p>We also will speak about scalability limitations of replication of Replication and Sharding, implementation complexities, and aspects of operation.</p>
<p>Peter Zaitsev&#8217;s bio:<br />
<a href="http://www.mysqlperformanceblog.com/" target="_blank">MySQL Performance Blog</a></p>
<p>Peter helped many companies ranging from one man startups to Fortune 500 companies with their Performance and Scaling problems on various stages starting from architecture design and down to queries and schema optimization.</p>
<p>Over cause of the years Peter has spoken on many International conferences focused on MySQL, Open Source, Databases or High Performance Web applications.</p>
<p>Before co-founding <a href="http://www.percona.com/" target="_blank">Percona</a> Peter worked for MySQL AB as head of High Performance Group being involved in Support, Consulting, Development and working with vendors helping to optimize their software or hardware to perform well with MySQL.</p>
<p>Peter also was involved in number of Web Startups in the roles ranging from CTO to Consultant and has a lot of experience in MySQL and Web Applications Operations, Deployment, Quality Assurance and Development.<br />
Please join us!</p>
<p><a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;time=&amp;date=&amp;ttype=&amp;q=235+2nd+St,+San+Francisco,+CA+94105&amp;sll=37.0625,-95.677068&amp;sspn=28.444641,57.65625&amp;ie=UTF8&amp;ll=37.786038,-122.397265&amp;spn=0.003455,0.007038&amp;z=18&amp;om=1" target="_blank">Map to CNET Networks, Inc. </a><br />
When you arrive, please look for the PHP/MySQL Meetup sign pointing you to the conference room.</p>
<p>Look forward to seeing you there!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2008/10/23/scaling-mysql-powered-web-sites-by-sharding-and-replication-sf-mysql-meetup-nov-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GameSpot and TV are hiring</title>
		<link>http://www.grepmymind.com/2008/05/29/gamespot-and-tv-are-hiring/</link>
		<comments>http://www.grepmymind.com/2008/05/29/gamespot-and-tv-are-hiring/#comments</comments>
		<pubDate>Thu, 29 May 2008 23:04:18 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Chow.com]]></category>
		<category><![CDATA[CNET]]></category>
		<category><![CDATA[GameSpot.com]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[TV.com]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=60</guid>
		<description><![CDATA[A shameless plug for CNET&#8230; We&#8217;re hiring a few Senior Software Engineers for GameSpot.com, TV.com and Chow.com. Yes, that&#8217;s a Sr SE positions for each of those sites. We&#8217;re raising the bar and looking to bring on some powerful coders to expand the functionality of our sites. Here&#8217;s a brief list of the job skill [...]]]></description>
			<content:encoded><![CDATA[<p>A shameless plug for CNET&#8230;  We&#8217;re hiring a few Senior Software Engineers for <a href="http://www.gamespot.com">GameSpot.com</a>, <a href="http://www.tv.com">TV.com</a> and <a href="http://www.chow.com">Chow.com</a>.  Yes, that&#8217;s a Sr SE positions for each of those sites.   We&#8217;re raising the bar and looking to bring on some powerful coders to expand the functionality of our sites.  Here&#8217;s a brief list of the job skill requirements:</p>
<p><span style="text-decoration:underline;">Must Have:</span></p>
<ul>
<li>Expert PHP skills, bonus for RoR</li>
<li>5-7 years of real world experience engineering web solutions for LAMP stacks</li>
<li>Strong relational DB knowledge (table optimization, query optimization)</li>
<li>Ability to prioritize and lead multiple simultaneous projects effectively</li>
<li>Excellent understanding of OO software engineering concepts</li>
<li>Ability to arhitect solid, scalable, extensible solutions for SE needs</li>
<li>Excited by working on high-level design and architecture</li>
<li>Comfortable mentoring junior engineers</li>
<li>Expereince with formal release processes</li>
<li>Strong verbal, written, analytical and communication skills</li>
</ul>
<p><span style="text-decoration:underline;">Bonus for:<br />
</span></p>
<ul>
<li>Admin experience with MySQL, Apache, SVN</li>
<li>Background developing in a more structured language (C, C++, Java, etc)</li>
<li>At least 3 years experience in high-traffic/high-availability web sites</li>
<li>Strong UI experience with javaScript and AJAX using mootools or other JS Frameworks</li>
<li>Experience with following technologies:  Memcached, Smarty, SOLR, Lucene, Zend Framework</li>
</ul>
<p>If you think you have what it takes, head over to our <a href="https://careers.cnetnetworks.com/joblist.html">Jobs site</a> and apply: <a href="https://careers.cnetnetworks.com/joblist.html">https://careers.cnetnetworks.com/joblist.html</a></p>
<p>If you want to discuss the job in more detail first, please don&#8217;t hesitate to send me an<br />
 at michael[<br />
]tougeron[<br />
]cnet[<br />
]com.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2008/05/29/gamespot-and-tv-are-hiring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Conf 2008 &#8211; MySQL Proxy (Day 4)</title>
		<link>http://www.grepmymind.com/2008/04/21/mysql-conf-2008-mysql-proxy-day-4/</link>
		<comments>http://www.grepmymind.com/2008/04/21/mysql-conf-2008-mysql-proxy-day-4/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 22:40:10 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql proxy]]></category>
		<category><![CDATA[mysql08]]></category>
		<category><![CDATA[mysqlconf08]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=58</guid>
		<description><![CDATA[MySQL Proxy is one of the new products that MySQL released this year that has some real promise. In the MySQL Proxy, the Friendly Man in the Middle session Jan Kneschke went over the existing and planned features of the proxy. MySQL Proxy has a c-based event driven core that has command line support, event [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://forge.mysql.com/wiki/MySQL_Proxy">MySQL Proxy</a> is one of the new products that MySQL released this year that has some real promise.   In the <a href="http://en.oreilly.com/mysql2008/public/schedule/detail/495">MySQL Proxy, the Friendly Man in the Middle</a> session <a href="http://jan.kneschke.de/">Jan Kneschke</a> went over the existing and planned features of the proxy.</p>
<p>MySQL Proxy has a c-based event driven core that has command line support, event handling and a <a href="http://www.lua.org/">Lua</a>-based scripting layer.  The proxy is loading into MySQL via the plugin interface.  With the community edition, you are responsible for writing your own scripts.  But with <a href="http://www.mysql.com/products/enterprise/">MySQL Enterprise</a>, it will come with several pre-built scripts that add some enhanced functionality.</p>
<p>The most basic use of MySQL Proxy is to rewrite or alter your queries.  If you have a costly query that is killing your db, but you&#8217;re not sure where it is coming from, you can write a Lua script to either reject the query or to alter it and make it more manageable.  It stops the dba from having to wait for a developer to update code and/or deploy the fix.</p>
<p>Another trick you can do with MySQL Proxy is to create new SQL commands.  While this is probably not going to be a great idea, you can see a few interesting examples at <a href="http://thenoyes.com/littlenoise/?p=63">http://thenoyes.com/littlenoise/?p=63</a>.  It is a good way to expand on functionality at the lowest level.  Or to lose/forget where you put it when you switch to another db.  <img src='http://www.grepmymind.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><span id="more-27"></span></p>
<p>One of the features MySQL was thinking of when they built MySQL Proxy is the ability to manage your queries at the database level.  Imagine tracking query quotas, by ip, user, db, etc., then rejecting queries automatically if over quota.  Or perhaps to simulate a db outage or transaction failure when testing code to ensure properly fail-over or error handling.</p>
<p>One of the default Lua scripts that comes with MySQL Proxy is a basic <a href="http://en.wikipedia.org/wiki/Load_balancing_(computing)">load balancer</a> for the db.  It rotates the connections round-robin betweeen the MySQL servers.  Since it is in the database layer, it can be aware of slag lag and adjust the rotation accordingly.  Since it is a Lua script, you can customize it to work how you want it to.</p>
<p>In MySQL Enterprise, this script is on steroids and does so much more.  The load balancer automatically checks the slave state, including lag, # of connections, last error, etc., and kicks the server from rotation if it finds something &#8220;wrong&#8221; with the slave.  This functionality will be integrated with MySQL Enterprise Monitor so that you will have an easy view into how the load balancer is working.</p>
<p>Also for Enterprise, the MySQL team is working on an automated sharding algorithm to go with <a href="http://dev.mysql.com/doc/refman/5.1/en/partitioning.html">MySQL 5.1&#8242;s table partitioning</a>.  I&#8217;m not sure how easy that will be to implement, but if they are able to pull it off, I&#8217;ll be mighty happy.  At least for basic partitioning or sharding, like with a user table, you could do it through MySQL Proxy without having to worry about missing an update someplace in your code.  If you combine this with logging, you can update your code at your leisure and easily find the queries you missed without having to worry about breaking the site.</p>
<p>Other planned improvements include being able to run parallel queries, two-phased commits and syncronyous replication.  Since the proxy is not the database engine, it can use multiple cores on a server and assign out queries and other processes in ways that the db engine you are using cannot.</p>
<p>This is still very new technology/product for MySQL, but I&#8217;m looking forward to what comes out of it.  There is a lot of possibility in it, as well as the potential for bloat.  Personally, I think it will end up back as MySQL core so that the engines can take advantage of some of the Proxy abilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2008/04/21/mysql-conf-2008-mysql-proxy-day-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Conf 2008 &#8211; Maria Engine (Day 3)</title>
		<link>http://www.grepmymind.com/2008/04/17/mysql-conf-2008-maria-engine-day-3/</link>
		<comments>http://www.grepmymind.com/2008/04/17/mysql-conf-2008-maria-engine-day-3/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 18:53:07 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Maria]]></category>
		<category><![CDATA[myisam]]></category>
		<category><![CDATA[mysql08]]></category>
		<category><![CDATA[mysqlconf08]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=57</guid>
		<description><![CDATA[Wednesday afternoon Monty went through the Architecture of Maria, what the new features are and what its roadmap will be. For those of you who are not aware of Maria, it is a new db engine that Monty announced back in January. Maria was designed to be a crash-safe replacement for MyISAM. Maria supports the [...]]]></description>
			<content:encoded><![CDATA[<p>Wednesday afternoon <a href="http://monty-says.blogspot.com/">Monty</a> went through the <a href="http://en.oreilly.com/mysql2008/public/schedule/detail/521">Architecture of Maria</a>, what the new features are and what its roadmap will be.  For those of you who are not aware of <a href="http://dev.mysql.com/doc/refman/5.1-maria/en/se-maria.html">Maria</a>, it is a new db engine that <a href="http://monty-says.blogspot.com/2008/01/maria-engine-is-released.html">Monty announced</a> back in January.</p>
<p>Maria was designed to be a crash-safe replacement for <a href="http://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html">MyISAM</a>.  Maria supports the same row formats and features as MyISAM.  This means it can be fully compatible with MyISAM by simply running it in non-transactional control.  It will be ACID compliant and have multi-version concurrency control (MVCC).</p>
<p><span id="more-26"></span></p>
<p>Version 1.0 of Maria was released in January as a <a href="http://dev.mysql.com/downloads/maria/index.html">branch of MySQL</a>.  It will continue to be a branch until version 2.0 where it will hopefully be part of MySQL 6.  Customized documentation is also available on <a href="http://dev.mysql.com/doc/refman/5.1-maria/en/se-maria.html">http://dev.mysql.com/doc/refman/5.1-maria/en/se-maria.html</a>.</p>
<p>Version 1.5 of Maria should be released any week now.  Monty had originally hoped to announce it this week at the conference, but it is not quite done yet.  He says that it should be out sometime between Late April to mid-May.  Starting with version 1.5, Maria will support concurrent INSERT and SELECT operation.  This will give Maria a nice feature merge between InnoDB and MyISAM.</p>
<p>Starting with MySQL 6 in Q4 of 2008, version 2 of Maria will be fully transactional and ACID compliant.  Having the crash recovery will be a great thing to have with the read speed of MyISAM.  Version 3 will be optimized for higher concurrency.</p>
<p>With the expected small footprint and the efficient data storage model, Maria will be a good engine of choice for desktop applications or embedding in applications.</p>
<p>The way in which Maria is crash-safe is kind of interesting.  It stores everything except table definitions into log files.  While these log files can be quite large, starting size is 1GB, it creates a few cool features.  With MyISAM tables, you can apply a lock to the db (or shutdown the server) and then copy the data to a new server.  With Maria, you can simply copy the data and the logs to the new server.  Like with MyISAM, the new server will have corrupted tables.  Unlike MyISAM, Maria will then run through the logs and recover the db to where it should be.  Or, if you don&#8217;t like that method, you can take last night&#8217;s backup to the new server, copy just today&#8217;s logs from the donor server and start up MySQL.  Maria will take the data from the backup and then automatically apply the logs until the new server is up-to-date.</p>
<p>There is quite a list of features that are either already in Maria or will be by the time version 3 comes out.</p>
<ul>
<li>MVCC &amp; ACID</li>
<li>Equal lookup speed for all indexes</li>
<li>Allows easy copying of tables and/or Maria logs</li>
<li>Has instant COUNT(*) queries</li>
<li>Better BLOG handling than MyISAM</li>
<li>Versioned</li>
<li>Crash safe</li>
<li>Data stored in 8k pages for less locking and improved query performance</li>
</ul>
<p>By using 8k pages Maria will be faster on static size indexes than MyISAM, but slower on variable length keys.  Updates that are planned for version 2 or 3 will make variable length indexes just as fast.</p>
<p>There are a few disadvantages of Maria over MyISAm.</p>
<ul>
<li>No INSERT DELAYED (may or may not eventually be added)</li>
<li>Fulltext indexes are not yet crash-safe (planned to be fixed in version 3)</li>
<li>No external locking</li>
<li>Like MyISAM it will not support RAID</li>
<li>When using checksums, the data size will be slightly larger for indexes</li>
<li>Storage of very small rows (&lt;25 bytes) are not efficient with the new page format</li>
</ul>
<p>All in all, I&#8217;m pretty excited about where they are going with Maria.  While some of the databases I use are write heavy the vaste majority are primarily reads; there are only so many news stories a day.  I looks like Maria will give us the stability and locking abilities of InnoDB while keeping the speed of MyISAM reads.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2008/04/17/mysql-conf-2008-maria-engine-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Conf 2008 &#8211; Applied Partitioning (Day 3)</title>
		<link>http://www.grepmymind.com/2008/04/16/mysql-conf-2008-applied-partitioning-day-3/</link>
		<comments>http://www.grepmymind.com/2008/04/16/mysql-conf-2008-applied-partitioning-day-3/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 03:46:42 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql08]]></category>
		<category><![CDATA[mysqlconf08]]></category>
		<category><![CDATA[partitioning]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=56</guid>
		<description><![CDATA[The Applied Partitioning and Scaling Your Database System session by Phil Hildebrand appears to be a very popular session. The line outside the door was more of a crowd than a line. The talk was about the new partitioning abilities of MySQL 5.1. The new table partitioning system has several benefits for your large datasets [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://en.oreilly.com/mysql2008/public/schedule/detail/133">Applied Partitioning and Scaling Your Database System</a> session by <a href="http://theplatform.com/">Phil Hildebrand</a> appears to be a very popular session.  The line outside the door was more of a crowd than a line.  The talk was about the new <a href="http://dev.mysql.com/doc/refman/5.1/en/partitioning.html">partitioning abilities of MySQL 5.1</a>.</p>
<p>The new table partitioning system has several benefits for your large datasets where you are having performance issues due to the volume of data.  It can reduce the seek &amp; scan set sizes and reduce the INSERT/UPDATE transaction durations.  If you are already performing UNION queries or secondary queries to find data in an archive table, this functionality may be for you.</p>
<p>There are four (point 5) partitioning styles available for your use:</p>
<ol>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html">Range </a>
<ul>
<li>Very useful for situations where the data is accessed by date</li>
<li>Usually used when a limited number of primary partitions are needed</li>
<li>It supports sub-partitions (the .5 partition type)</li>
</ul>
</li>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/partitioning-list.html">List </a>
<ul>
<li>Good for when you are grouping data in partitions out of order (e.g., SELECT 1,5,7 in partition X)</li>
</ul>
<ul>
<li>As the name implies, you list which data goes into which partition</li>
<li>Higher maintenance costs in many situations</li>
<li>Supports sub-partitions</li>
</ul>
</li>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/partitioning-hash.html">Hash </a>
<ul>
<li>Usually has a lower maintenance cost</li>
<li>Partitions the data based on the hash that you tell it</li>
<li>Good for when you have non-intelligent keys</li>
<li>Works with both a limited and a large number of Partitions</li>
</ul>
</li>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/partitioning-key.html">Key </a>
<ul>
<li>Similar to Hash partitioning, but based on one or more of the fields in the primary key instead of a user-defined hash</li>
<li>If there is no primary key, then the first unique index is used</li>
<li>Does not require the key to be integer based</li>
</ul>
</li>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/partitioning-subpartitions.html">Subpartitions </a>
<ul>
<li>As the name implies, a partition within a partition</li>
<li>You can only create subpartitions for Range &amp; List</li>
<li>If needed, subpartitions can be spread across volumes</li>
</ul>
</li>
</ol>
<p>The alter table statements are fairly simplistic; &#8220;ALTER TABLE my_table PARTITION BY KEY() PARTITIONS 50&#8243; will create 50 partitions for that table.  If you need to add more partitions, you can just run &#8220;ALTER TABLE my_table ADD PARTITION PARTITIONS 25&#8243; and your table will now have 75 partitions.  Of course you can shrink the size of the partitions as well.  One of the nice features of the partition modification is that the data is re-allocated as appropriate.</p>
<p>All in all, this looks like a much better solution than the standard 10/90 tables.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2008/04/16/mysql-conf-2008-applied-partitioning-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Conf 2008 &#8211; MySQL Sandbox (Day 3)</title>
		<link>http://www.grepmymind.com/2008/04/16/mysql-conf-2008-mysql-sandbox-day-3/</link>
		<comments>http://www.grepmymind.com/2008/04/16/mysql-conf-2008-mysql-sandbox-day-3/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 21:42:32 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql sandbox]]></category>
		<category><![CDATA[mysql08]]></category>
		<category><![CDATA[mysqlconf08]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=55</guid>
		<description><![CDATA[This morning&#8217;s first session is hosted by Giuseppe Maxia about MySQL Sandbox. This tool was created so that you can quickly &#38; easily setup sandbox servers for testing MySQL. It installs side servers on a machine that is already running MySQL. Sandbox installs quickly without disturbing the existing MySQL installation. The home for the MySQL [...]]]></description>
			<content:encoded><![CDATA[<p>This morning&#8217;s first session is hosted by <a href="http://datacharmer.org/">Giuseppe Maxia</a> about <a href="http://en.oreilly.com/mysql2008/public/schedule/detail/311">MySQL Sandbox</a>.  This tool was created so that you can quickly &amp; easily setup sandbox servers for testing MySQL.  It installs side servers on a machine that is already running MySQL.  Sandbox installs quickly without disturbing the existing MySQL installation.</p>
<p>The <a href="http://sourceforge.net/projects/mysql-sandbox/">home for the MySQL Sandbox project</a> is hosted on <a href="http://www.sourceforget.net/">SourceForge.net</a>.  It is not an officially supported product which is why Giuseppe keeps it on SourceForge.</p>
<p>The Sandbox was designed so that you don&#8217;t have to go through the hassle, and potentially error prone, steps of setting up multiple sandbox databases.  It&#8217;s very common for these manual installations to accidentally install in the same data directory (can corrupt your data) or install with the same port/socket (MySQL won&#8217;t start).</p>
<p>Details of installing and using after the break&#8230;<span id="more-24"></span></p>
<p>The simple installation steps for MySQL Sandbox automatically creates a new instance of MySQL with a sandboxed data directory, port, and socket.  In order to use Sandbox&#8217;s express_install script you need to download and un-tar a copy of MySQL for each version you wish to install.  The script by default uses $HOME/opt/mysql as its base directory so be sure to extract MySQL there.  You can change the default source directory, but by being in your home directory it helps keep your instance separate from everyone else&#8217;s.</p>
<p>Next download and extract the MySQL Sandbox from SourceForge and run the following:<br />
./express_install.pl {directory in $HOME/opt/mysql}<br />
If you prefer, you can run ./express_install.pl /path/to/mysql/directory</p>
<p>You can setup replication or multiple instances by ./set_replication.pl and ./set_custom_many.pl respectively.  You also have a variety of install options that can be found by adding &#8211;help to the commands.</p>
<p>One of the nice commands you can use once the sandbox is setup and running is &#8220;clear.&#8221;  This command will reset the data and instance back to default so that you can start again from scratch.  Running the &#8220;use&#8221; command will get you into the <a href="http://en.wikipedia.org/wiki/Command_line_interface">CLI</a> of the appropriate instance.  One thing to keep in mind is that the commands to interact with the sandboxes must be run from the installed directory.  You also have access to some of the standard MySQL command line tools by running &#8220;my {sqldump|sqlbinlog|sqladmin}&#8221; (Note the space after my).</p>
<p>It seems like this would be a good system to use in conjunction with <a href="http://www.phpunit.de/wiki/TestDatabase">DBUnit</a>.  As I <a href="http://www.grepmymind.com/2008/04/15/mysql-conf-2008-phpdbunit-day-2/">talked about yesterday</a>, DBUnit can auto-load/populate data.  By putting the two together you should have a very maintainable and separate testing environment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2008/04/16/mysql-conf-2008-mysql-sandbox-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Conf 2008 &#8211; InnoDB (Day 2)</title>
		<link>http://www.grepmymind.com/2008/04/15/mysql-conf-2008-innodb-day-2/</link>
		<comments>http://www.grepmymind.com/2008/04/15/mysql-conf-2008-innodb-day-2/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 22:06:30 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[mysql08]]></category>
		<category><![CDATA[mysqlconf08]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=52</guid>
		<description><![CDATA[A new version for InnoDB was announced today. During the InnoDB: Fast, Reliable, Proven Transactional Storage for MySQL session Heikki Tuuri and Ken Jacobs (Heikki&#8217;s handler) went over the changes and improvements. InnoDB is now using MySQL 5.1&#8242;s plugin API and has some very cool/interesting new features, including: Fast index creation &#8211; Add/drop indexes without [...]]]></description>
			<content:encoded><![CDATA[<p>A new version for <a href="http://www.innodb.com/wp/2008/04/15/innodb-plugin-announced/">InnoDB</a> was announced today.  During the <a href="http://en.oreilly.com/mysql2008/public/schedule/detail/2257">InnoDB: Fast, Reliable, Proven Transactional Storage for MySQL</a> session Heikki Tuuri and Ken Jacobs (Heikki&#8217;s handler) went over the changes and improvements.  InnoDB is now using <a href="http://dev.mysql.com/doc/refman/5.1/en/plugin-api.html">MySQL 5.1&#8242;s plugin API</a> and has some very cool/interesting new features, including:<br />
<a href="http://www.grepmymind.com/2008/04/15/mysql-conf-2008-innodb-day-2/#fastindex">Fast index creation</a> &#8211; Add/drop indexes without copying the data.<br />
<a href="http://www.grepmymind.com/2008/04/15/mysql-conf-2008-innodb-day-2/#datacompression">Data compression</a> &#8211; Significantly reduces storage size &amp; I/O by shrinking the tables.<br />
<a href="http://www.grepmymind.com/2008/04/15/mysql-conf-2008-innodb-day-2/#rowformat">New row format</a> &#8211; Off-page storage of large data elements like BLOB, TEXT, etc.</p>
<p>The new format of InnoDB can be dynamically installed w/o re-linking MySQL, which should be pretty handy for people who cannot easily re-build MySQL.  The InnoDB upgrade is fully compatible with existing InnoDB tables and can even be downgraded back to the old version if you need to.</p>
<p>Installation is a breeze and can be done by downloading, extracting the ha_innodb.so into the MySQL Server plugin directory, and then restarting the mysqld.  Be sure to enable &#8220;skip_innodb&#8221; in the my.cnf so that it doesn&#8217;t conflict with the engine already in MySQL.  The innodb_file_format is now Barracuda.  Finally log into the cli and &#8220;INSTALL PLUGIN INNODB SONAME &#8216;ha_innodb.so&#8217;&#8221; and &#8220;INSTALL PLUGIN INNODB_LOCKS SONAME &#8216;ha_innodb.s&#8217;&#8221;</p>
<p><span id="more-23"></span></p>
<p>MySQL/InnoDB 5.1 rebuilds the entire table row by row when creating a new index.  The InnoDB Plugin builds just the new index.  DROP INDEX for secondary indexes has improved performance as well because it only changes the data dictionary.  When changing the PRIMARY KEY or FOREIGN KEYs it still needs to rebuild the table; it&#8217;s faster then 5.1.</p>
<p>Any C/U/D style queries will wait on the index creation, but SELECTs will still go through in shared mode.  Newly created indexes lack the historical version info for row (for only that index).  This can affect consistent read SELECTs of older transactions.</p>
<p>According the benchmarks that <a href="http://www.mysqlperformanceblog.com/">Peter Zaitsev</a> performed, creating a new index on a 3GB table it takes 88 minutes with version 5.1 and an amazing <strong>8 minutes</strong> with the new InnoDB plugin.</p>
<p>With the new table compression you can choose the compressed page size on a per table basis.   In order to use this functionality, you need to have innodb_file_per_table = 1 and innodb_file_format = barracuda.  The patterns in the data will determine your compression rate.  According to Heikki, it can often be &gt;50%. Both the tables <em>and</em> the indexes are compressed using zlib.  It now trys to do updates and inserted in small sets so that it does not need to recompress when the data is updated.  Deletions do not require page recreation.If the page is frequently accessed, it will keep it uncompressed.  It is important to monitoring the compress vs uncompressed rates in the INFORMATION_SCHEMA.  As few as 1% unsuccessful compression operations wastes your cpu time.</p>
<p>The best time to use compression is when you are I/O bound.  If you are cpu-bound, then it is not a good idea to use compression as it will spend even more cpu time compressing and uncompressing.  As a test, you can gzip your .ibd data file and see what level of compression you get.  If it does not compress to significantly less than 50% of the original size, it probably won&#8217;t be worth doing.</p>
<p><a name="rowformat"></a></p>
<p>The new ROW_FORMAT = DYNAMIC also requires the Baricuda file format.  It is meant for situations when you have a table with a lot of large data elements like BLOB or TEXT.  Now InnoDB can store the data off-page.</p>
<p>With the INFORMATION_SCHEMA updates, you can now find out much more information about the status of InnoDB and the individual tables.  You can even now easily find the blocking queries and which process id is the owner.  This should be a great help to DBAs who need to manage large sets of InnoDB databases.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2008/04/15/mysql-conf-2008-innodb-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Conf 2008 &#8211; PHP/DBUnit (Day 2)</title>
		<link>http://www.grepmymind.com/2008/04/15/mysql-conf-2008-phpdbunit-day-2/</link>
		<comments>http://www.grepmymind.com/2008/04/15/mysql-conf-2008-phpdbunit-day-2/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 20:50:39 +0000</pubDate>
		<dc:creator>Michael Tougeron</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[dbunit]]></category>
		<category><![CDATA[mysql08]]></category>
		<category><![CDATA[mysqlconf08]]></category>
		<category><![CDATA[phpunit]]></category>

		<guid isPermaLink="false">http://www.grepmymind.com/?p=51</guid>
		<description><![CDATA[I started off the day today listening to the keynotes at the MySQL Conference. Unfortunately I had to work on something so I wasn&#8217;t able to really pay attention. I hope I didn&#8217;t miss anything important. After the keynotes, I decided to start off with the Testing PHP/MySQL Applications with PHPUnit/DbUnit session by Sebastian Bermann. [...]]]></description>
			<content:encoded><![CDATA[<p>I started off the day today listening to the keynotes at the MySQL Conference.  Unfortunately I had to work on something so I wasn&#8217;t able to really pay attention.  <img src='http://www.grepmymind.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />   I hope I didn&#8217;t miss anything important.</p>
<p>After the keynotes, I decided to start off with the <a href="http://en.oreilly.com/mysql2008/public/schedule/detail/165">Testing PHP/MySQL Applications with PHPUnit/DbUnit</a> session by <a href="http://sebastian-bergmann.de/">Sebastian Bermann</a>.  I know I should already be using <a href="http://www.phpunit.de/">PHPUnit</a>, but honestly I&#8217;ve never gotten around to it.  I&#8217;m hoping that this will give me the kick in the ass that I need to start.  <img src='http://www.grepmymind.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><span id="more-22"></span></p>
<p>The first thing that Sebastian wanted us to note is that the PHPUnit listed on SourceForget.net is not the real PHPUnit.  I kind of thought that weird and confusing.  You&#8217;d think by now that he could get that old project de-listed.</p>
<p>Installing PHPUnit is fairly simple.  It is not hosted off the standard PEAR channel, but by a quick extra command you can get access to it.<br />
pear channel-discover pear.phpunit.de<br />
pear install phpunit/PHPUnit</p>
<p>By setting up a reusable testing environment with PHPUnit you&#8217;ll be able to do automatic execution of your test code.  This would be good for things like over night tests of the latest code commits.  If a test fails, the developer team can be immediately notified.  Be sure to enforce strict separation between production and testing environments.  The last thing you want to happen is to have your test cases somehow break production.</p>
<p>Setting up a test case can be as simple or complex as you need it to be.  You setup a class for each element/object you need to test.  Each test case is a member function of this class where you assert value comparisons.  While the <a href="http://www.phpunit.de/pocket_guide/3.2/en/writing-tests-for-phpunit.html">documentation examples are best</a>, here is a very simple example:</p>
<pre>
&lt;?php
class BankAccountTest extends PHPUnit_Framework_TestCase {

    public function testBalanceIsInitiallyZero() {
        $ba = new BankAccount;
        $this-&gt;assertEquals(0, $ba-&gt;getBalance());
    }
}
?&gt;</pre>
<p>Where things can now start to get interesting is when you use the <a href="http://www.phpunit.de/wiki/TestDatabase">database extension</a> to PHPUnit.  The DBUnit extension was ported from <a href="http://www.junit.org/">jUnit</a> by <a href="http://www.ds-o.com/">Michael Lively Jr</a>.</p>
<p>DBUnit uses PDO to talk to a default SQLite database.  However, a database it not required as it can emulate a database in memory or via XML.  It also works with MySQL, but if the tests are written in a way that is compatible with SQLite, then the tests can be faster by about 20%.</p>
<p>Once of the nice things about how DBUnit works is how it puts the db into a known state between each test run.  This means it avoids problems with one test case corrupting the db for other tests.  By using its ability to import/export data to/from XML datasets, your db tests will run reliably and accurately.</p>
<p>Like with PHPUnit, DBUnit has assert methods like &#8220;assertTableEquals(expected, actual)&#8221; and can use PHP arrays for comparison.  This can be good for comparing records in the database.  e.g., The db gets updated via a PHPunit test and you then do a DBUnit test to verify the action.</p>
<p>A quick example of a DBUnit test case:</p>
<pre>
&lt;?php
class BankAccountTest extends PHPUnit_Extensions_Database_TestCase {
    protected $pdo;

    public function __construct() {
        $this-&gt;pdo = PHPUnit_Util_PDO::factory($dsn);
        BankAccount::createTable($this-&gt;pdo);
    }

    protected function getConnection() {
        return $tihs-&gt;createDefaultDBConnection($this-&gt;pdo, 'mysql');
    }

    protect function getDataSet() {
        return $this-&gt;createFlatXMLDataSet('/path/to/seed.xml');
    }
}
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.grepmymind.com/2008/04/15/mysql-conf-2008-phpdbunit-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
