<?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>kennygorman.com</title>
	<atom:link href="http://www.kennygorman.com/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.kennygorman.com/wordpress</link>
	<description>database engineering, architecture, and other assorted bits</description>
	<lastBuildDate>Thu, 10 May 2012 03:11:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Hello ObjectRocket</title>
		<link>http://www.kennygorman.com/wordpress/?p=915</link>
		<comments>http://www.kennygorman.com/wordpress/?p=915#comments</comments>
		<pubDate>Thu, 10 May 2012 03:11:29 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Database Engineering]]></category>
		<category><![CDATA[Mongodb]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=915</guid>
		<description><![CDATA[I am very excited to say that it&#8217;s time to say hello to ObjectRocket! A few weeks ago I made the move from a great place, to an even better opportunity. A couple of amazing guys and myself founded ObjectRocket &#8230; <a href="http://www.kennygorman.com/wordpress/?p=915">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am very excited to say that it&#8217;s time to say hello to <a target=1 href=http://www.objectrocket.com>ObjectRocket</a>!  A few weeks ago I made the move from a great place, to an even better opportunity.  A couple of amazing guys and myself founded ObjectRocket Inc. It&#8217;s time to make ObjectRocket my full time job.</p>
<p>I have been at Shutterfly for almost two and a half years now.  I am very proud of the teams <a href=http://www.nosqldatabases.com/main/2011/1/6/q-a-with-kenny-gorman-data-architect-for-shutterfly-inc.html>achievements</a> in this timeframe.  We brought a completely new technology into Shutterfly, and while we had some kinks, I am very proud of where we ended up.  Shutterfly is one of the larger and perhaps more complex MongoDB production installations in existence.  For some amount of time I will continue to help Shutterfly transition.</p>
<p>We created ObjectRocket with the idea that we can do something better than anyone else. Even the &#8216;big guys&#8217;.  It&#8217;s time for me to focus on making customers happy with fantastic Engineering and Technology.  Our initial concept has some legs, so I am going to pour my energies into making this idea a success.  Frankly, I have never been so excited about something I have been doing in my life.</p>
<p>What is it we are doing?  Well, we aren&#8217;t quite ready to announce that quite yet.  But I can say that we plan to solve, what we believe are, serious problems in the MongoDB and NoSQL space.  For now, it&#8217;s heads down on building something completely new and amazing.  If you are curious, we will provide updates on <a href=https://twitter.com/#!/objectrocket>Twitter</a> so just follow us.</p>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2FIVfQpp&amp;text=Hello+ObjectRocket&amp;related=kennygorman&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=915"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=915</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mongoperf</title>
		<link>http://www.kennygorman.com/wordpress/?p=905</link>
		<comments>http://www.kennygorman.com/wordpress/?p=905#comments</comments>
		<pubDate>Tue, 01 May 2012 17:10:16 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Mongodb]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=905</guid>
		<description><![CDATA[Starting with version 2.1, MongoDB has a new utility called Mongoperf. Mongoperf is a great little utility for quickly testing the I/O performance of your system. I thought I would go over it a little bit. Mongoperf can be found &#8230; <a href="http://www.kennygorman.com/wordpress/?p=905">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Starting with <a href=http://www.mongodb.org/downloads>version 2.1</a>, MongoDB has a new utility called <a href=https://github.com/mongodb/mongo/blob/master/src/mongo/client/examples/mongoperf.cpp>Mongoperf</a>.  Mongoperf is a great little utility for quickly testing the I/O performance of your system.  I thought I would go over it a little bit.</p>
<p>Mongoperf can be found in the bin directory of your 2.1+ MongoDB distribution.  The utility is invoked with options to tell it how to perform a sample I/O run, and it gives output indicating the performance of your disk I/O subsystem.  The utility generates random I/O over a single file. One great aspect of this utility is it accesses the I/O subsystem very much like MongoDB itself does.  It uses the same <a href=http://en.wikipedia.org/wiki/Memory-mapped_file>memory mapped files</a> interface just like MongoDB itself.  Running the utility with &#8211;help outputs the various options for running.  The utility takes a JSON document as input.  Typically I like to store the various options in a .js file and emit that into stdin of the utility as such:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$<span style="color: #66cc66;">&gt;</span>echo <span style="color: #3366CC;">&quot;{nThreads:2,w:true,r:false,mmf:true}&quot;</span> <span style="color: #66cc66;">&gt;</span> perfsession1.<span style="color: #006600;">js</span>
$<span style="color: #66cc66;">&gt;</span>
$<span style="color: #66cc66;">&gt;</span>mongoperf <span style="color: #66cc66;">&lt;</span> perfsession1.<span style="color: #006600;">js</span></pre></div></div>

</p>
<p>
The most powerful usage of this tool is to bypass the Linux page cache, and perform Direct I/O. Running in this manner shows true gauge on how fast your storage subsystem is.  This is done via the {mmf:false} assignment in the config document.  When mmf is false, then Mongoperf performs direct I/O via the <a href=http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html>O_DIRECT</a> flag.  So no system memory is used to cache file buffers.  That said, anything below the linux filesystem could be cached, including controller and drive caches.  For example:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$<span style="color: #66cc66;">&gt;</span>echo <span style="color: #3366CC;">&quot;{nThreads:2,w:true,r:false,mmf:false,fileSizeMB:10000}&quot;</span> <span style="color: #66cc66;">&gt;</span> perfsession1.<span style="color: #006600;">js</span>
$<span style="color: #66cc66;">&gt;</span>
$<span style="color: #66cc66;">&gt;</span>mongoperf <span style="color: #66cc66;">&lt;</span> perfsession1.<span style="color: #006600;">js</span></pre></div></div>

</p>
<p>The output of the utility shows the throughput as the threads ramp up to the nThreads limit you specify and then will just run at that level of concurrency forever.  The output is in Disk Operations per Second.  For example:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">mongoperf <span style="color: #66cc66;">&lt;</span> perfsession1.<span style="color: #006600;">js</span>
mongoperf
<span style="color: #003366; font-weight: bold;">use</span> -h <span style="color: #000066; font-weight: bold;">for</span> help
options:
<span style="color: #66cc66;">&#123;</span> nThreads: <span style="color: #CC0000;">2</span>, w: <span style="color: #003366; font-weight: bold;">true</span>, r: <span style="color: #003366; font-weight: bold;">false</span>, mmf: <span style="color: #003366; font-weight: bold;">true</span>, fileSizeMB: <span style="color: #CC0000;">256</span> <span style="color: #66cc66;">&#125;</span>
creating test file size:256MB ...
<span style="color: #006600;">testing</span>...
<span style="color: #003366; font-weight: bold;">new</span> thread, total running : <span style="color: #CC0000;">1</span>
<span style="color: #CC0000;">9922222</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">11197085</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">11130190</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">11308340</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">11068894</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">11084711</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">11447503</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">11233556</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #003366; font-weight: bold;">new</span> thread, total running : <span style="color: #CC0000;">2</span>
<span style="color: #CC0000;">12925223</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">12142161</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">12290461</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">12476609</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">12392879</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">11772720</span> ops<span style="color: #66cc66;">/</span>sec 
<span style="color: #CC0000;">12308988</span> ops<span style="color: #66cc66;">/</span>sec</pre></div></div>

</p>
<p>
There are a couple things to note about this utility.  For one, be sure to specify a reasonably large file for fileSizeMB. Maybe like 10000.  This ensures you are wider than a single stripe if using RAID, this also ensures that you have enough data on disk that random I/O is truly random. Let the test run long enough that the system normalizes (caches get populated, etc). Try for 3-5 minutes or so as a general guideline. Also try different nThreads values to get a feel for the level of disk concurrency your system can tolerate.  Also, another great test is to test the read and write options together, and separate to get a feel for how well your system does on each on of these types of workload.  For instance, you can test the write cache on a controller quite effectively using this approach.</p>
<p>In the future I think having an option for creating multiple files to I/O against would be a great option and allow for a bit more realistic workload.  Perhaps an option to output the results in BSON/JSON would be cool too.</p>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2FISN3Pj&amp;text=Mongoperf&amp;related=kennygorman&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=905"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=905</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chevrolet Volt</title>
		<link>http://www.kennygorman.com/wordpress/?p=901</link>
		<comments>http://www.kennygorman.com/wordpress/?p=901#comments</comments>
		<pubDate>Sat, 04 Feb 2012 08:54:49 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=901</guid>
		<description><![CDATA[I have had my Volt for about a month now, and it&#8217;s a pretty darn amazing piece of engineering. If you don&#8217;t know much about the volt, here is a quickie intro. If you really want to geek out, check &#8230; <a href="http://www.kennygorman.com/wordpress/?p=901">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have had my Volt for about a month now, and it&#8217;s a pretty darn amazing piece of engineering.  If you don&#8217;t know much about the volt, here is a quickie intro.</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/JRj0FD5YIo4" frameborder="0" allowfullscreen></iframe></p>
<p>If you really want to geek out, check out the <a href=http://www.youtube.com/watch?v=an-VyIau-FM>deep dive series</a> of video&#8217;s on the amazing drivetrain in the car.</p>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2FxlSslI&amp;text=Chevrolet+Volt&amp;related=kennygorman&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=901"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=901</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOPA and PIPA explained</title>
		<link>http://www.kennygorman.com/wordpress/?p=895</link>
		<comments>http://www.kennygorman.com/wordpress/?p=895#comments</comments>
		<pubDate>Fri, 20 Jan 2012 17:10:48 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=895</guid>
		<description><![CDATA[This is a nice explanation of the implications of SOPA and PIPA.]]></description>
			<content:encoded><![CDATA[<p>This is a nice explanation of the implications of SOPA and PIPA.</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/tzqMoOk9NWc" frameborder="0" allowfullscreen></iframe></p>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2FxrRIjz&amp;text=SOPA+and+PIPA+explained&amp;related=kennygorman&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=895"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=895</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoSV follow up</title>
		<link>http://www.kennygorman.com/wordpress/?p=880</link>
		<comments>http://www.kennygorman.com/wordpress/?p=880#comments</comments>
		<pubDate>Thu, 15 Dec 2011 22:28:19 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Mongodb]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=880</guid>
		<description><![CDATA[What a madhouse!  The 2011 MongoSV conference was a blast, it didn&#8217;t hurt there were over 1000 attendees.  I really enjoyed some excellent talks, and good discussions with colleges and 10gen employees.  Plus, the opportunities in the evenings for a &#8230; <a href="http://www.kennygorman.com/wordpress/?p=880">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>What a madhouse!  The 2011 MongoSV conference was a blast, it didn&#8217;t hurt there were over 1000 attendees.  I really enjoyed some excellent talks, and good discussions with colleges and 10gen employees.  Plus, the opportunities in the evenings for a couple cold beverages were fantastic.</p>
<p><img src="http://p.twimg.com/AgQbOzLCEAENMzh.jpg:large" alt="" /></p>
<p>I have a couple take-aways from this years conference:</p>
<ul>
<li>The new aggregation features of MongoDB are going to be great, I am excited to start playing with them.</li>
<li>10gen is listening to us about the locking behavior of MongoDB, and the roadmap is promising.</li>
<li>Lots of people use AWS for MongoDB.  More than I would have thought considering EBS is horrid.  Most everyone thought AWS and EBS was painful, but the pain was outweighed by the perceived benefits.</li>
<li>Everyone agrees schema design is key.  The money quote from the conference was:</li>
</ul>
<blockquote>
<div><span style="font-size: small;"><span style="line-height: 24px;">Schema free != Design free &#8211;<a href="http://twitter.com/nathenharvey" rel="user" target="_blank">@nathenharvey</a> <del>@nathanharvey </del></span></span></div>
</blockquote>
<div><span style="font-size: small;"><span style="line-height: 24px;"><br />
</span></span></p>
<ul>
<li><span style="font-size: medium; line-height: 24px;">Some people are using MongoDB for what I would call, non-optimal use cases.  I think one has to be careful to really think hard about when to use MongoDB and when not to.  It&#8217;s an exciting product, but not a cure-all.  I listened to more than one talk where folks will have a hard time continuing to use MongoDB.</span></li>
<li><span style="font-size: medium; line-height: 24px;">There is still a lot to be learned about how to operate MongoDB in a production environment.  Hrm, seems like a good subject for future talks.</span></li>
<li><span style="font-size: medium; line-height: 24px;">Someone needs to do a talk on locking internals so folks can really understand that locks in MongoDB are not the same locks as in most RDBMS&#8217;s.</span></li>
<li><span style="font-size: medium; line-height: 24px;">The SJC airport is awesome.  I had to fly out Friday night to LA, and it was seamless.  Sorry I missed the after-party.</span></li>
</ul>
<div><span style="font-size: small;"><span style="line-height: 24px;">Here is the video from my session:</span></span></div>
<p><object id="clip_embed_player_flash" width="400" height="300" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="auto_play=false&amp;start_volume=25&amp;title=MongoSV 2011 Conference&amp;channel=mongodb&amp;archive_id=302135175" /><param name="src" value="http://www.justin.tv/widgets/archive_embed_player.swf" /><param name="allowscriptaccess" value="always" /><param name="allownetworking" value="all" /><param name="allowfullscreen" value="true" /><embed id="clip_embed_player_flash" width="400" height="300" type="application/x-shockwave-flash" src="http://www.justin.tv/widgets/archive_embed_player.swf" allowScriptAccess="always" allowNetworking="all" allowFullScreen="true" flashvars="auto_play=false&amp;start_volume=25&amp;title=MongoSV 2011 Conference&amp;channel=mongodb&amp;archive_id=302135175" allowscriptaccess="always" allownetworking="all" allowfullscreen="true" /></object><br />
<a class="trk" style="padding: 2px 0px 4px; display: block; width: 320px; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;" href="http://www.justin.tv/mongodb#r=-rid-&amp;s=em">Watch live video from mongodb on Justin.tv</a></p>
</div>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2FuUsnVz&amp;text=MongoSV+follow+up&amp;related=kennygorman&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=880"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=880</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Masters of MongoDB</title>
		<link>http://www.kennygorman.com/wordpress/?p=875</link>
		<comments>http://www.kennygorman.com/wordpress/?p=875#comments</comments>
		<pubDate>Thu, 15 Dec 2011 21:25:37 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Mongodb]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=875</guid>
		<description><![CDATA[The day before this years MongoSV Conference a few folks, chosen by 10gen, and labelled the Masters of MongoDB gathered to discuss the MongoDB platform, swap war stories, share gripes, and overall give feedback on the direction and roadmap of &#8230; <a href="http://www.kennygorman.com/wordpress/?p=875">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The day before this years <a href="http://www.10gen.com/events/mongosv-2011">MongoSV Conference</a> a few folks, chosen by 10gen, and labelled the <a href="http://www.mongodb.org/display/DOCS/MongoDB+Masters">Masters of MongoDB</a> gathered to discuss the MongoDB platform, swap war stories, share gripes, and overall give feedback on the direction and roadmap of MongoDB to the 10gen folks.</p>
<p>First of all, I am incredibly honored to be considered in such a group of high caliber folks. But beyond that I was struck by the level of commitment that 10gen has to making sure the roadmap is proper and that they are listening very closely to the community. I feel like with such a commitment the areas for improvement in MongoDB will get good attention and focus. I think this is a huge component for consideration when looking at MongoDB. The community is very very strong.  I made lots of good contacts and was able to connect with friends.</p>
<p>Thanks 10gen for putting on such a good event, and above all, listening to your customers.</p>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2Fuc1TG9&amp;text=Masters+of+MongoDB&amp;related=kennygorman&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=875"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=875</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL/Hbase tech talk at FB</title>
		<link>http://www.kennygorman.com/wordpress/?p=871</link>
		<comments>http://www.kennygorman.com/wordpress/?p=871#comments</comments>
		<pubDate>Wed, 07 Dec 2011 01:45:42 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Database Engineering]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=871</guid>
		<description><![CDATA[I was sorry to miss the event as some really good stuff was being discussed. Paul has some really great points about single server performance at the Q&#038;A at the end. Watch live streaming video from fbtechtalks at livestream.com]]></description>
			<content:encoded><![CDATA[<p>I was sorry to miss the event as some really good stuff was being discussed.  Paul has some really great points about single server performance at the Q&#038;A at the end.</p>
<p><iframe width="560" height="340" src="http://cdn.livestream.com/embed/fbtechtalks?layout=4&amp;clip=pla_a3d62538-1238-4202-a3be-e257cd866bb9&amp;height=340&amp;width=560&amp;autoplay=false" style="border:0;outline:0" frameborder="0" scrolling="no"></iframe>
<div style="font-size: 11px;padding-top:10px;text-align:center;width:560px">Watch <a href="http://www.livestream.com/?utm_source=lsplayer&amp;utm_medium=embed&amp;utm_campaign=footerlinks" title="live streaming video">live streaming video</a> from <a href="http://www.livestream.com/fbtechtalks?utm_source=lsplayer&amp;utm_medium=embed&amp;utm_campaign=footerlinks" title="Watch fbtechtalks at livestream.com">fbtechtalks</a> at livestream.com</div>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2Ftw3nts&amp;text=MySQL%2FHbase+tech+talk+at+FB&amp;related=kennygorman&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=871"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=871</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I am speaking at the MongoSV 2011 conference</title>
		<link>http://www.kennygorman.com/wordpress/?p=865</link>
		<comments>http://www.kennygorman.com/wordpress/?p=865#comments</comments>
		<pubDate>Mon, 07 Nov 2011 22:26:54 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Mongodb]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=865</guid>
		<description><![CDATA[I had a great time presenting at MongoSV last year.  This year I am presenting a talk on MongoDB performance tuning, similar to what I presented at MongoSF but with some updated items around scalability, tuning, and hardware!  My college &#8230; <a href="http://www.kennygorman.com/wordpress/?p=865">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I had a great time presenting at MongoSV <a href=http://www.kennygorman.com/wordpress/?p=776>last year</a>.  This year I am presenting a talk on MongoDB performance tuning, similar to what I <a href=http://www.kennygorman.com/wordpress/?p=818>presented at MongoSF</a> but with some updated items around scalability, tuning, and hardware!  My college Luciano Resende is also speaking.  I hope to give some insight into some of the work we have done at Shutterfly around performance tuning and scalability.  I also hope to speak in more detail about our implementation of the <a href=https://github.com/facebook/flashcache/>Facebook Flashcache</a> technology.  If you haven&#8217;t signed up, you can <a href="http://www.10gen.com/events/mongosv-2011" target="1">register here</a> for the conference.  Here is a video 10gen put out for the conference:</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/e9mLR7gBWbE" frameborder="0" allowfullscreen></iframe></p>
<p>*changed the video to the updated version from 10gen</p>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2FuOMA5E&amp;text=I+am+speaking+at+the+MongoSV+2011+conference&amp;related=kennygorman%3AMongoSV+2011&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=865"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=865</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Stellar use cases for MongoDB</title>
		<link>http://www.kennygorman.com/wordpress/?p=834</link>
		<comments>http://www.kennygorman.com/wordpress/?p=834#comments</comments>
		<pubDate>Thu, 28 Jul 2011 18:10:28 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Data Architecture]]></category>
		<category><![CDATA[Database Engineering]]></category>
		<category><![CDATA[Mongodb]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=834</guid>
		<description><![CDATA[MongoDB has a nice wide sweet spot where it&#8217;s a very useful persistence platform, however, it&#8217;s not for everything. I thought I would quickly enumerate a couple great use cases that have come up in the last year and a &#8230; <a href="http://www.kennygorman.com/wordpress/?p=834">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>MongoDB has a nice wide sweet spot where it&#8217;s a very useful persistence platform, however, it&#8217;s not for everything.  I thought I would quickly enumerate a couple great use cases that have come up in the last year and a half and why they are such a great fit for MongoDB.</p>
<p>1. Documents: Using MongoDB instead of a XML based system.</p>
<p><a href="http://en.wikipedia.org/wiki/Mongodb">MongoDB</a> is a document oriented data store.  <a href="http://en.wikipedia.org/wiki/XML">XML</a> is a document language.  By moving a traditional XML app to MongoDB one can experience a few key advantages.  The typical pattern in XML is to fetch an entire document, work with it, and put it back to the server.  This approach has many downsides including the amount of data transmitted over the wire, collision detection/resolution,  data set size, and server side overhead.  In the MongoDB model, documents can be updated <a href="http://www.mongodb.org/display/DOCS/Atomic+Operations">atomically</a>, fetched by index, and even partially fetched.  Applications are simpler, faster, and more robust.</p>
<p>2. Metadata storage systems.</p>
<p>Any system that stores metadata can be a great use case in MongoDB. Such systems typically have a pattern of adding attributes about some type of entitiy, and then needing to query/sort/filter based on these items.  The prototypical use case for such a system is the use of tags. The tag implementation is so superior in MongoDB that almost single handedly compels one to use MongoDB for any system needing tags.  Simply put:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">db.<span style="color: #006600;">mymetadata</span>.<span style="color: #006600;">save</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>stuff:<span style="color: #3366CC;">&quot;some data here&quot;</span>, thing:<span style="color: #3366CC;">&quot;/x/foo/bar.mpg&quot;</span>, tags:<span style="color: #66cc66;">&#91;</span><span style="color: #3366CC;">'cats'</span>,<span style="color: #3366CC;">'beach'</span>,<span style="color: #3366CC;">'family'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>
db.<span style="color: #006600;">mymetadata</span>.<span style="color: #006600;">ensureIndex</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span><span style="color: #3366CC;">&quot;tags&quot;</span>:<span style="color: #CC0000;">-1</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>
db.<span style="color: #006600;">mymetadata</span>.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>tags:<span style="color: #3366CC;">'cats'</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>
...
<span style="color: #3366CC;">&quot;indexBounds&quot;</span> : <span style="color: #66cc66;">&#123;</span>
		<span style="color: #3366CC;">&quot;tags&quot;</span> : <span style="color: #66cc66;">&#91;</span>
			<span style="color: #66cc66;">&#91;</span>
				<span style="color: #3366CC;">&quot;cats&quot;</span>,
				<span style="color: #3366CC;">&quot;cats&quot;</span>
			<span style="color: #66cc66;">&#93;</span>
		<span style="color: #66cc66;">&#93;</span></pre></div></div>

<p>In many metadata systems the schema may vary depending on the metadata itself.  This allows for huge degrees of flexibility in the data modeling of applications that store metadata.  Imagine a media storage service that can store video and image data in the same collection but with different attributes about each type of metadata.  No joins needed on query, and the logical I/O path is minimized! MongoDB now supports <a href="http://www.mongodb.org/display/DOCS/Indexes#Indexes-SparseIndexes">sparse indexes</a>,  so indexes on attributes that are not in every document are kept at a minimum size.</p>
<p>3. Read intensive systems</p>
<p>Any system where the amount of change is low, and read is high is a nice sweet spot for MongoDB.  MongoDB has a nice scaling property with both the <a href="http://www.mongodb.org/display/DOCS/Replica+Sets">replica sets</a> functionality (setting SLAVE_OK), as well as using <a href="http://www.mongodb.org/display/DOCS/Sharding+Introduction">sharding</a>.   Combine this with the document model, and metadata storage capabilites one has an excellent system for say a <a href="http://gawker.com/">gawker</a> clone.  Reads can come off any one of <em>N</em> sharded nodes by say, story_id, and reads can be geographically targeted to a slave for reads.  Keep your <a href="http://www.kennygorman.com/wordpress/?p=611">data clustered by key</a> for super fast I/O.</p>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2Fq4TBzo&amp;text=Stellar+use+cases+for+MongoDB&amp;related=kennygorman&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=834"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=834</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoSF 2011 slides: MongoDB Performance Tuning</title>
		<link>http://www.kennygorman.com/wordpress/?p=818</link>
		<comments>http://www.kennygorman.com/wordpress/?p=818#comments</comments>
		<pubDate>Wed, 25 May 2011 20:44:43 +0000</pubDate>
		<dc:creator>kgorman</dc:creator>
				<category><![CDATA[Mongodb]]></category>
		<category><![CDATA[mongosf]]></category>
		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false">http://www.kennygorman.com/wordpress/?p=818</guid>
		<description><![CDATA[Here are my slides from MongoSF 2011: MongoDB Performance Tuning]]></description>
			<content:encoded><![CDATA[<p>Here are my slides from MongoSF 2011:</p>
<p><a title="View MongoDB Performance Tuning on Scribd" href="http://www.scribd.com/doc/56271132/MongoDB-Performance-Tuning" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;">MongoDB Performance Tuning</a><iframe class="scribd_iframe_embed" src="http://www.scribd.com/embeds/56271132/content?start_page=1&#038;view_mode=list&#038;access_key=key-1hnjbdbd1h36109o86zd" data-auto-height="true" data-aspect-ratio="1.33333333333333" scrolling="no" id="doc_85239" width="100%" height="600" frameborder="0"></iframe><script type="text/javascript">(function() { var scribd = document.createElement("script"); scribd.type = "text/javascript"; scribd.async = true; scribd.src = "http://www.scribd.com/javascripts/embed_code/inject.js"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(scribd, s); })();</script></p>
<div class="tw_button" style=";float:none;margin:0 auto;text-align:center;"><a href="http://twitter.com/share?url=http%3A%2F%2Fbit.ly%2FlXCZIT&amp;text=MongoSF+2011+slides%3A+MongoDB+Performance+Tuning&amp;related=kennygorman&amp;lang=en&amp;count=horizontal&amp;counturl=http://www.kennygorman.com/wordpress/?p=818"  class="twitter-share-button">Tweet</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.kennygorman.com/wordpress/?feed=rss2&#038;p=818</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

