<?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: Top 10 Reasons to Avoid the SimpleDB Hype</title>
	<atom:link href="http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html</link>
	<description>The personal home page of Ryan Park of San Francisco, California, USA.</description>
	<lastBuildDate>Mon, 08 Feb 2010 17:23:49 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: isterin</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-2#comment-350</link>
		<dc:creator>isterin</dc:creator>
		<pubDate>Mon, 08 Feb 2010 17:23:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-350</guid>
		<description>#1.  RDBMS provides some rather rudimentary capabilities for enforcing integrity.  In any applications, invariants are enforced through the application logic, not the database.  There are definitely ways around it, like triggers that can enforce this, nothing that a NOSQL db can&#039;t have.  CouchDb allows for validation functions that can enforce such integrity.  Either way, in most apps invariant enforcement happens on both ends and is superfluous.  Invariants should be enforce in a single place and rdbms doesn&#039;t have as much power as a Turing complete language to do so.&lt;br&gt;&lt;br&gt;#2.  That&#039;s completely application dependent.  Consistency usually comes with performance tradeoffs.  Some apps would much rather accept the write and then reconcile it later (asynchronously), than force the user to wait and block until such a transaction can be completed due to all the lock contentions that can happen in a high traffic environment.  Again, it&#039;s very application dependent, but what you&#039;re describing is called &quot;Eventual Consistency&quot;, you can read more here &lt;a href=&quot;http://queue.acm.org/detail.cfm?id=1466448&quot; rel=&quot;nofollow&quot;&gt;http://queue.acm.org/detail.cfm?id=1466448&lt;/a&gt;.  RDBMS themselves are not necessarily the bottlenecks, rather it&#039;s ACID transactions which are.  Every high load/concurrency app eventually trades transactional semantics for performance.  It&#039;s up to your application to figure out how to reconcile temporal inconsistencies if at all.  If you still think it&#039;s that important, just ask eBay.  They don&#039;t use transactions and utilize the eventually consistent model?  What does that mean, it means that there might be a very minuscule chance of some inconsistency and they might have 1 out of 100K spooked customers, but who cares, they&#039;ve just achieved a 99.9999% customer satisfaction, as opposed to many unsatisfied customers if their system is somehow unavailable or slow.&lt;br&gt;&lt;br&gt;#3.  Probably, but the same is true when you shard a sql database.  Also, through map reduce operations, aggregates are actually more natural and some key/value DBs now provide such operations.  The great thing, map/reduce is completely abstracted from distributed database semantics, so you can easily distributed this operation over numerous remote nodes.&lt;br&gt;&lt;br&gt;#4.  Not sure what you mean.  Maybe they&#039;ll require non-SQL coding, but not necessarily &quot;more&quot; coding.  And coding might actually be shorter as in some languages you utilize a Turing complete language to apply predicates vs. the limitations of SQL and it&#039;s underlying relational model.  Again, it&#039;s true that RDBMS are more suited for reporting at this time, mostly because they&#039;ve accumulates lots of experience over the years.  On the other hand, if reporting is not a huge part of your system and you want it in a relation database, just replicate.  Data warehouses do this all the time to optimize/denormalize data for reporting, as reporting on highly normalized data is also very inefficient. &lt;br&gt;&lt;br&gt;#5.  I think that&#039;s a side-effect of the network.  Yes, it&#039;s true that RDBMS algorithms might have been more optimized over the last 20 years, but that doesn&#039;t stop from NOSQL DBs from getting faster.  Basically, there is no theoretical reason for a &quot;local&quot; NOSQL query to be any slower than RDBMS.  It&#039;s all in implementation details of that db, storage structure, search algorithms, etc...  Because SimpleDb is distributed, the side effect of aggregate functions is &quot;more latency&quot;.  The same side effect would be true in a sharded RDBMS.&lt;br&gt;&lt;br&gt;#6.  RDBMS might have more tools now, but again, that&#039;s not a reason to necessarily disqualify the benefits of a different storage model.  Also, have you looked at CouchDBs replication?  Talking about fast and easy.&lt;br&gt;&lt;br&gt;#7. See #5 response.  Also, SimpleDb wasn&#039;t designed to be fast per say, although that wouldn&#039;t be a bad feature.  It was designed to be linearly scalable, so you might incur some latency, but that latency should be constant with increasing load.&lt;br&gt;&lt;br&gt;#8. Nonsense.  There is a sweet spot for RDBMS systems and I use them in any applications which has a requirement for such and/or where the data fits into the relational model.  I hate having to square pegs into round wholes.  Like storing highly dynamic and hierarchical data in a relational database, either using a convoluted normalized model or using skinny tables, which defeat the purpose of the relational model completely.  Also, you mention Facebook, MySpace, etc...  Yes, they use a RDBMS engine behind the scenes, but if you look at their storage model, they are utilizing it just like a key/value store.  Basically, they&#039;re not benefiting from any features that RDBMS systems are good at.&lt;br&gt;&lt;br&gt;#9.  Agree, you don&#039;t want to make that the top priority unless you have to.  But I think many people read &quot;don&#039;t optimize prematurely&quot; as a ticket to forgo such activity.  That&#039;s the worst thing you can do.  I faced that personally, when you only worry about features and not the long term requirement changes/scalability and then your system fails in production due to an unexpected load which you never accounted for and/or thought a your architecture can handle.  What then?  Well, besides making up excuses and trying to savior any of the relationships that still exists with users, you&#039;re up for 2 weeks straight not sleeping doing what you should have done upfront.  That&#039;s like building bridges and only being able to handle 5 cars on a bridge at a time, because in this rural community we&#039;ll never have traffic.  Disastrous results await.&lt;br&gt;&lt;br&gt;#10. No shit, everything is useful only in certain contexts.</description>
		<content:encoded><![CDATA[<p>#1.  RDBMS provides some rather rudimentary capabilities for enforcing integrity.  In any applications, invariants are enforced through the application logic, not the database.  There are definitely ways around it, like triggers that can enforce this, nothing that a NOSQL db can&#39;t have.  CouchDb allows for validation functions that can enforce such integrity.  Either way, in most apps invariant enforcement happens on both ends and is superfluous.  Invariants should be enforce in a single place and rdbms doesn&#39;t have as much power as a Turing complete language to do so.</p>
<p>#2.  That&#39;s completely application dependent.  Consistency usually comes with performance tradeoffs.  Some apps would much rather accept the write and then reconcile it later (asynchronously), than force the user to wait and block until such a transaction can be completed due to all the lock contentions that can happen in a high traffic environment.  Again, it&#39;s very application dependent, but what you&#39;re describing is called &#8220;Eventual Consistency&#8221;, you can read more here <a href="http://queue.acm.org/detail.cfm?id=1466448">http://queue.acm.org/detail.cfm?id=1466448</a>.  RDBMS themselves are not necessarily the bottlenecks, rather it&#39;s ACID transactions which are.  Every high load/concurrency app eventually trades transactional semantics for performance.  It&#39;s up to your application to figure out how to reconcile temporal inconsistencies if at all.  If you still think it&#39;s that important, just ask eBay.  They don&#39;t use transactions and utilize the eventually consistent model?  What does that mean, it means that there might be a very minuscule chance of some inconsistency and they might have 1 out of 100K spooked customers, but who cares, they&#39;ve just achieved a 99.9999% customer satisfaction, as opposed to many unsatisfied customers if their system is somehow unavailable or slow.</p>
<p>#3.  Probably, but the same is true when you shard a sql database.  Also, through map reduce operations, aggregates are actually more natural and some key/value DBs now provide such operations.  The great thing, map/reduce is completely abstracted from distributed database semantics, so you can easily distributed this operation over numerous remote nodes.</p>
<p>#4.  Not sure what you mean.  Maybe they&#39;ll require non-SQL coding, but not necessarily &#8220;more&#8221; coding.  And coding might actually be shorter as in some languages you utilize a Turing complete language to apply predicates vs. the limitations of SQL and it&#39;s underlying relational model.  Again, it&#39;s true that RDBMS are more suited for reporting at this time, mostly because they&#39;ve accumulates lots of experience over the years.  On the other hand, if reporting is not a huge part of your system and you want it in a relation database, just replicate.  Data warehouses do this all the time to optimize/denormalize data for reporting, as reporting on highly normalized data is also very inefficient. </p>
<p>#5.  I think that&#39;s a side-effect of the network.  Yes, it&#39;s true that RDBMS algorithms might have been more optimized over the last 20 years, but that doesn&#39;t stop from NOSQL DBs from getting faster.  Basically, there is no theoretical reason for a &#8220;local&#8221; NOSQL query to be any slower than RDBMS.  It&#39;s all in implementation details of that db, storage structure, search algorithms, etc&#8230;  Because SimpleDb is distributed, the side effect of aggregate functions is &#8220;more latency&#8221;.  The same side effect would be true in a sharded RDBMS.</p>
<p>#6.  RDBMS might have more tools now, but again, that&#39;s not a reason to necessarily disqualify the benefits of a different storage model.  Also, have you looked at CouchDBs replication?  Talking about fast and easy.</p>
<p>#7. See #5 response.  Also, SimpleDb wasn&#39;t designed to be fast per say, although that wouldn&#39;t be a bad feature.  It was designed to be linearly scalable, so you might incur some latency, but that latency should be constant with increasing load.</p>
<p>#8. Nonsense.  There is a sweet spot for RDBMS systems and I use them in any applications which has a requirement for such and/or where the data fits into the relational model.  I hate having to square pegs into round wholes.  Like storing highly dynamic and hierarchical data in a relational database, either using a convoluted normalized model or using skinny tables, which defeat the purpose of the relational model completely.  Also, you mention Facebook, MySpace, etc&#8230;  Yes, they use a RDBMS engine behind the scenes, but if you look at their storage model, they are utilizing it just like a key/value store.  Basically, they&#39;re not benefiting from any features that RDBMS systems are good at.</p>
<p>#9.  Agree, you don&#39;t want to make that the top priority unless you have to.  But I think many people read &#8220;don&#39;t optimize prematurely&#8221; as a ticket to forgo such activity.  That&#39;s the worst thing you can do.  I faced that personally, when you only worry about features and not the long term requirement changes/scalability and then your system fails in production due to an unexpected load which you never accounted for and/or thought a your architecture can handle.  What then?  Well, besides making up excuses and trying to savior any of the relationships that still exists with users, you&#39;re up for 2 weeks straight not sleeping doing what you should have done upfront.  That&#39;s like building bridges and only being able to handle 5 cars on a bridge at a time, because in this rural community we&#39;ll never have traffic.  Disastrous results await.</p>
<p>#10. No shit, everything is useful only in certain contexts.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Linktipps Februar 2010 :: Blackflash</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-2#comment-349</link>
		<dc:creator>Linktipps Februar 2010 :: Blackflash</dc:creator>
		<pubDate>Tue, 26 Jan 2010 14:46:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-349</guid>
		<description>[...] Internetanwender ein Muss sein!Fighting Hype with Hype: Eine sachkundige Antwort auf Ryan Parks Top 10 Reasons to Avoid the SimpleDB Hype, welche die Problematik von NOSQL vs. SQL beleuchtet. Vor allem das Fazit sollte man sich zu Herzen [...]</description>
		<content:encoded><![CDATA[<p>[...] Internetanwender ein Muss sein!Fighting Hype with Hype: Eine sachkundige Antwort auf Ryan Parks Top 10 Reasons to Avoid the SimpleDB Hype, welche die Problematik von NOSQL vs. SQL beleuchtet. Vor allem das Fazit sollte man sich zu Herzen [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Stocker</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-2#comment-348</link>
		<dc:creator>Dan Stocker</dc:creator>
		<pubDate>Fri, 22 Jan 2010 13:58:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-348</guid>
		<description>I think I can agree with your conclusion. Nosql is not a must. If a certain solution is easier to implement in relational and that satisfies your performance needs, use relational.&lt;br&gt;&lt;br&gt;Problems arise when you&#039;re trying to square the circle. When your application needs aggregate functions or joins, nosql is not the way to go. When your app doesn&#039;t need a lot of personalization in terms of aggregation (say, statistics based on user preferences) you can just reverse the problem, and generate and update aggregated data as they come in.</description>
		<content:encoded><![CDATA[<p>I think I can agree with your conclusion. Nosql is not a must. If a certain solution is easier to implement in relational and that satisfies your performance needs, use relational.</p>
<p>Problems arise when you&#39;re trying to square the circle. When your application needs aggregate functions or joins, nosql is not the way to go. When your app doesn&#39;t need a lot of personalization in terms of aggregation (say, statistics based on user preferences) you can just reverse the problem, and generate and update aggregated data as they come in.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SQL and NoSQL - the rant continues &#124; Prajwal Tuladhar's Blog</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-2#comment-346</link>
		<dc:creator>SQL and NoSQL - the rant continues &#124; Prajwal Tuladhar's Blog</dc:creator>
		<pubDate>Tue, 19 Jan 2010 04:13:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-346</guid>
		<description>[...] the same source, I got chance to read these two interesting blog posts. One was about criticizing Amazon SimpleDB and overall NoSQL technologies [...]</description>
		<content:encoded><![CDATA[<p>[...] the same source, I got chance to read these two interesting blog posts. One was about criticizing Amazon SimpleDB and overall NoSQL technologies [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Top 10 Reasons to Avoid the SimpleDB Hype &#8250; ec2base</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-2#comment-345</link>
		<dc:creator>Top 10 Reasons to Avoid the SimpleDB Hype &#8250; ec2base</dc:creator>
		<pubDate>Mon, 18 Jan 2010 07:16:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-345</guid>
		<description>[...] http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html">http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sam</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-2#comment-340</link>
		<dc:creator>sam</dc:creator>
		<pubDate>Wed, 02 Dec 2009 12:08:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-340</guid>
		<description>10000000% correct, you are the man, i came to those conclusions the hard way, i wish i could have found this post, all my work went in the dustbin when the website was launched, simpledb was the cause of its failure :(</description>
		<content:encoded><![CDATA[<p>10000000% correct, you are the man, i came to those conclusions the hard way, i wish i could have found this post, all my work went in the dustbin when the website was launched, simpledb was the cause of its failure <img src='http://www.ryanpark.org/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: randv</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-2#comment-337</link>
		<dc:creator>randv</dc:creator>
		<pubDate>Sun, 22 Nov 2009 15:50:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-337</guid>
		<description>Amazon agrees, they now offer hosted mysql (one could do it before with your own image) with better support that your hosted version.</description>
		<content:encoded><![CDATA[<p>Amazon agrees, they now offer hosted mysql (one could do it before with your own image) with better support that your hosted version.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: manvscode</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-2#comment-295</link>
		<dc:creator>manvscode</dc:creator>
		<pubDate>Thu, 30 Jul 2009 04:15:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-295</guid>
		<description>Very good stuff.</description>
		<content:encoded><![CDATA[<p>Very good stuff.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Websites tagged &#34;simpledb&#34; on Postsaver</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-2#comment-292</link>
		<dc:creator>Websites tagged &#34;simpledb&#34; on Postsaver</dc:creator>
		<pubDate>Sun, 28 Jun 2009 23:17:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-292</guid>
		<description>[...] - Engineering Building Blocks for a Startup Company saved by luishernando2009-06-26 - Top 10 Reasons to Avoid the SimpleDB Hype saved by efgramsbergen2009-06-26 - Amazon Web Services vs. Google App Engine: The Race to the [...]</description>
		<content:encoded><![CDATA[<p>[...] &#8211; Engineering Building Blocks for a Startup Company saved by luishernando2009-06-26 &#8211; Top 10 Reasons to Avoid the SimpleDB Hype saved by efgramsbergen2009-06-26 &#8211; Amazon Web Services vs. Google App Engine: The Race to the [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sartre</title>
		<link>http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html/comment-page-1#comment-288</link>
		<dc:creator>sartre</dc:creator>
		<pubDate>Thu, 28 May 2009 13:08:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.ryanpark.org/?p=392#comment-288</guid>
		<description>&quot;You didn&#039;t spend too much time researching SimpleDB then&quot; &lt;br&gt;Ummm. yeah lets also add the s3 goodness for something thats easily handled by a rdbms. Do you work for amazon?</description>
		<content:encoded><![CDATA[<p>&#8220;You didn&#39;t spend too much time researching SimpleDB then&#8221; <br />Ummm. yeah lets also add the s3 goodness for something thats easily handled by a rdbms. Do you work for amazon?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
