<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comments on: Is NoSQL Finally Going Mainstream?</title>
	<atom:link href="http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-nosql-finally-going-mainstream</link>
	<description></description>
	<lastBuildDate>Tue, 08 May 2012 09:13:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53925</link>
		<dc:creator>MyWeeklyLinks – Week 7 &#171; Ole Morten Amundsen</dc:creator>
		<pubDate>Sun, 21 Feb 2010 14:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53925</guid>
		<description>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</description>
		<content:encoded><![CDATA[<p>[...] NoSQL going mainstream OMA: Another, &#8220;I love noSQL and hate relational dbs&#8221; with a comments section of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-3/#comment-53811</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 20:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53811</guid>
		<description>Many interesting topics indeed :-) The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#039;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#039;m not entirely sure because I haven&#039;t looked into that product (yet) and don&#039;t know the specifics of that.

Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#039;t done already) -&gt; http://bret.appspot.com/entry/how-friendfeed-uses-mysql

The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD - Tackling Complexity in the Heart of Software (http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266439284&amp;sr=8-1)</description>
		<content:encoded><![CDATA[<p>Many interesting topics indeed <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The NoSQL data store I mentioned (CouchDB) is a document DB (not a distributed key/value store) that stores JSON objects. Not sure whether it is viable to layer an relational model on top of that. There are other NoSQL DB&#8217;s like MongoDB (which is also a document DB) that I think provide some sort of schema, but I&#8217;m not entirely sure because I haven&#8217;t looked into that product (yet) and don&#8217;t know the specifics of that.</p>
<p>Sure, it is possible to use something like MySQL and use that for high-traffic sites. FriendFeed uses it this way, but not with traditional table schemas. You can read this article to learn more about the specifics (if you haven&#8217;t done already) -&gt; <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" rel="nofollow">http://bret.appspot.com/entry/how-friendfeed-uses-mysql</a></p>
<p>The approach I mentioned about starting with the domain is called Domain-Driven Design (DDD for short). If you want to learn more about this approach, I can highly recommend the book DDD &#8211; Tackling Complexity in the Heart of Software (<a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1266439284&#038;sr=8-1</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53706</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:34:59 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53706</guid>
		<description>Hmm. So many interesting topics flying at once in the conversation that it&#039;s hard to keep it brief and focused! :)

The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#039;s so much conflating going on. And, the movement&#039;s extremely poor choice of a name only compounds the issue.

First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &quot;CAP Theorem&quot; problem better than ol&#039;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#039;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.

That doesn&#039;t mean that:
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#039;t change that. :)

b) that RDBMSes can&#039;t be made adaptable to these scenarios. (ex: Drizzle) 

c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &quot;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&quot;).

Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! :) I am far from a guru in the world of developing NoSQL implementations.

PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &quot;bottom&quot; and absolute &quot;top&quot; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</description>
		<content:encoded><![CDATA[<p>Hmm. So many interesting topics flying at once in the conversation that it&#8217;s hard to keep it brief and focused! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The root of the problem I have is getting devs to differentiate the logical from the physical in the mixed-up world of SQL, RDBMSes, NoSQL, CAP, BASE, and other such complex beasts. There&#8217;s so much conflating going on. And, the movement&#8217;s extremely poor choice of a name only compounds the issue.</p>
<p>First point: You will not get an argument from me that NoSQL (ugh!) databases currently address the physical, &#8220;CAP Theorem&#8221; problem better than ol&#8217;skool RDBMSes. Many RDBMSes (esp. startup-friendly, popular DBs like MySQL) weren&#8217;t built to address distributed petabytes of simple structure data with limited consistency needs but overwhelming partitioning ones.</p>
<p>That doesn&#8217;t mean that:<br />
a) all systems have those kinds of FBish needs. In fact, FB and its ilk lie at the far end of the bell curve, and no, the intertubes won&#8217;t change that. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>b) that RDBMSes can&#8217;t be made adaptable to these scenarios. (ex: Drizzle) </p>
<p>c) that we need to push down those CAP needs on to simpler web applications (which I am not sure if that is what you mean by &#8220;the largest apps/websites in the world all run from a NoSQL DB so why wouldn’t we learn, pick this up and move on&#8221;).</p>
<p>Second point: SQL, and the Relational Model that fathers it, is a different topic. I am not sure why one would think that the Relational Model is not layerable[sic] over distributed key-value stores, but I am open to being beat on the head with a good reason! <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am far from a guru in the world of developing NoSQL implementations.</p>
<p>PS: Your comment on your practices of the domain as a starting point is interesting. I naturally gravitate to the exact opposite. I start from both the absolute &#8220;bottom&#8221; and absolute &#8220;top&#8221; of a typical web app, namely I use ORM (Object-Role Modeling) to capture the conceptual structure of the data (and many of its constraints), and use cases to capture the behaviors in the system, and from there I use the domain model as the Play-Doh layer to merge those two worlds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53699</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Wed, 17 Feb 2010 06:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53699</guid>
		<description>&lt;a href=&quot;#comment-53678&quot; rel=&quot;nofollow&quot;&gt;@PT&lt;/a&gt; 
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#039;data model&#039; that constrains the documents one stores. Map-reduce isn&#039;t &#039;knock-off of SQL&#039; either. 

I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#039;t going to be much of help either.

When I develop an app, I start with the domain model because that&#039;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#039;t care about a data model or database because it doesn&#039;t interest the business (nor it shouldn&#039;t), so it doesn&#039;t interest me either. When I&#039;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.

I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#039;t we learn, pick this up and move on?

PS: I&#039;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-53678" rel="nofollow">@PT</a><br />
Did you ever take a serious look into a specific NoSQL data store (e.g. CouchDB)? There is no &#8216;data model&#8217; that constrains the documents one stores. Map-reduce isn&#8217;t &#8216;knock-off of SQL&#8217; either. </p>
<p>I agree that you can use an RDBMS and use a key/value table and it has been done, but that somewhat mitigates the point of buying Oracle and SQL isn&#8217;t going to be much of help either.</p>
<p>When I develop an app, I start with the domain model because that&#8217;s where the interesting functionality of the business domain lives. This is the place where I provide a model that corresponds with the feedback of the domain experts. I don&#8217;t care about a data model or database because it doesn&#8217;t interest the business (nor it shouldn&#8217;t), so it doesn&#8217;t interest me either. When I&#8217;m done with a fully fletched model, the shape of the domain is almost always different from the tables layed out by the DB folks. It just need to be able to store these things and move on. NHibernate reduces some of the pain, but the mismatch is still there and a NoSQL data store reduces it even further.</p>
<p>I want to conclude by saying that the largest apps/websites in the world all run from a NoSQL DB so why wouldn&#8217;t we learn, pick this up and move on?</p>
<p>PS: I&#8217;m sure you meant no disrespect. Discussions like these can get passionate and intense. Been there <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53678</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Tue, 16 Feb 2010 13:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53678</guid>
		<description>@David: 

Insulting? My apologies. It was not intended to be personally insulting.

But, if you want to take the aggressive approach that &quot;relational database was just a means for optimizing file storage&quot;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.

RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#039;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. 

I could just as easily say &quot;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&quot;, but that wouldn&#039;t be true, would it?

I meant no disrespect to Jan as a person. I&#039;m sure that if we met for a beer, we&#039;d all have a good time, although you probably now would refuse. :) I shouldn&#039;t have let my frustrations with the rampant NoSQL hype color my post. 

@Nick:  

Follow up to your analogy:

RDB -  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.

OODB - You want to store just a piston in the warehouse, you can&#039;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.

I&#039;m sure we can go on and on...</description>
		<content:encoded><![CDATA[<p>@David: </p>
<p>Insulting? My apologies. It was not intended to be personally insulting.</p>
<p>But, if you want to take the aggressive approach that &#8220;relational database was just a means for optimizing file storage&#8221;, then you best be prepared for like responses *on that topic*, because I will stand by the assertion that that is completely and utterly wrong.</p>
<p>RM, and its derivative language SQL, is very powerful. Good for all scenarios? Absolutely not, but still one of the most powerful tools in any dev&#8217;s arsenal. I guess if that is perceived as insulting to Jan to find some*thing* they said or believe wrong, then I am at a loss. </p>
<p>I could just as easily say &#8220;NoSQL databases answer the difficulty developers have with designing a suitable structure to data by letting anarchy reign and allowing them to store anything in any unstructured way&#8221;, but that wouldn&#8217;t be true, would it?</p>
<p>I meant no disrespect to Jan as a person. I&#8217;m sure that if we met for a beer, we&#8217;d all have a good time, although you probably now would refuse. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shouldn&#8217;t have let my frustrations with the rampant NoSQL hype color my post. </p>
<p>@Nick:  </p>
<p>Follow up to your analogy:</p>
<p>RDB &#8211;  After you assemble your car, which the dealer could have assembled for you before shipping, you then order a missing piston. You get the missing piston.</p>
<p>OODB &#8211; You want to store just a piston in the warehouse, you can&#8217;t. You have to create a fake car around it. Once you store the piston, you order a piston, and you get a car, and instructions on how to trace down the part chart to get to the piston.</p>
<p>I&#8217;m sure we can go on and on&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ozzebolleO</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53668</link>
		<dc:creator>ozzebolleO</dc:creator>
		<pubDate>Tue, 16 Feb 2010 08:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53668</guid>
		<description>&lt;a href=&quot;#comment-53653&quot; rel=&quot;nofollow&quot;&gt;@David Starr&lt;/a&gt; 

PT&#039;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#039;m not disagreeing with that.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53653" rel="nofollow">@David Starr</a> </p>
<p>PT&#8217;s rudeness was unnecessary but then again, no excuse to dismiss the technical message. I&#8217;m not disagreeing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Van Ryswyck</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53656</link>
		<dc:creator>Jan Van Ryswyck</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:16:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53656</guid>
		<description>&lt;a href=&quot;#comment-53654&quot; rel=&quot;nofollow&quot;&gt;@Nick&lt;/a&gt; 
@Nick I like that analogy. Thx for sharing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53654" rel="nofollow">@Nick</a><br />
@Nick I like that analogy. Thx for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53654</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:44:16 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53654</guid>
		<description>OODB - You order a car and it arrives outside your house.

RDB - You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</description>
		<content:encoded><![CDATA[<p>OODB &#8211; You order a car and it arrives outside your house.</p>
<p>RDB &#8211; You order a car, and its posted piece by piece (field) through your letter box where it has to be reassembled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Starr</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53653</link>
		<dc:creator>David Starr</dc:creator>
		<pubDate>Mon, 15 Feb 2010 16:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53653</guid>
		<description>I don&#039;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?

Oh, we won&#039;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.

Good job, Mr. Professional.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t suppose you could man up enough to make your point without being personally insulting to a man who has done so much for the craft of software development our community in general?</p>
<p>Oh, we won&#8217;t remove your comment, because it should stand in posterity to your rudeness. You should also note at this point that whatever technical message you were trying to make is now lost in this little drama.</p>
<p>Good job, Mr. Professional.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PT</title>
		<link>http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/comment-page-2/#comment-53652</link>
		<dc:creator>PT</dc:creator>
		<pubDate>Mon, 15 Feb 2010 15:00:33 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/12/is-nosql-finally-going-mainstream/#comment-53652</guid>
		<description>*sigh*

Yet another developer who doesn&#039;t understand the difference between the Relational Model and almost-Relational RDBMSes.

Coupled with the common trait in developers that they always get &quot;props&quot; for working out new tech, and never for fully understanding old tech, it&#039;s no wonder that this newest of database strawmen will die slowly, like XML and OO databases before it.

Let&#039;s keep it simple: the Relational Model is nothing more than a logical way to understand and therefore access/validate a data model. It has nothing to do with files, disks, tables, key-value stores, etc. That&#039;s the physical implementation thereof.

There is no such thing as semi- or unstructured data. There is always a structure. The question is how detailed it needs to be. I could create a &quot;relational&quot; database with one &quot;table&quot; and two attributes: Key and Value. I shove everything in it and call it ArmchairDB. I think the NoSQL people, like almost all developers, conflate the physical layer with the logical one all too often. I also find it funny when some NoSQL databases offer some sort of &quot;logical querying language&quot; that eventually grows up into some knock-off of SQL.

Lastly, am I the only guy who&#039;s never struggled with the &quot;impedance mismatch&quot;? Or, said another way, doesn&#039;t see it as such, but rather as the semantic mismatch that inevitably exists between any two systems built with a different vision? In fact, the Relational Model, if well implemented, does have an easy solution for this so-called mismatch. If one offered proper domain support, RDBMSes would be even easier to use.</description>
		<content:encoded><![CDATA[<p>*sigh*</p>
<p>Yet another developer who doesn&#8217;t understand the difference between the Relational Model and almost-Relational RDBMSes.</p>
<p>Coupled with the common trait in developers that they always get &#8220;props&#8221; for working out new tech, and never for fully understanding old tech, it&#8217;s no wonder that this newest of database strawmen will die slowly, like XML and OO databases before it.</p>
<p>Let&#8217;s keep it simple: the Relational Model is nothing more than a logical way to understand and therefore access/validate a data model. It has nothing to do with files, disks, tables, key-value stores, etc. That&#8217;s the physical implementation thereof.</p>
<p>There is no such thing as semi- or unstructured data. There is always a structure. The question is how detailed it needs to be. I could create a &#8220;relational&#8221; database with one &#8220;table&#8221; and two attributes: Key and Value. I shove everything in it and call it ArmchairDB. I think the NoSQL people, like almost all developers, conflate the physical layer with the logical one all too often. I also find it funny when some NoSQL databases offer some sort of &#8220;logical querying language&#8221; that eventually grows up into some knock-off of SQL.</p>
<p>Lastly, am I the only guy who&#8217;s never struggled with the &#8220;impedance mismatch&#8221;? Or, said another way, doesn&#8217;t see it as such, but rather as the semantic mismatch that inevitably exists between any two systems built with a different vision? In fact, the Relational Model, if well implemented, does have an easy solution for this so-called mismatch. If one offered proper domain support, RDBMSes would be even easier to use.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

