<?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: ACID versus BASE for database transactions</title>
	<atom:link href="http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/</link>
	<description>The blog of John D. Cook</description>
	<lastBuildDate>Tue, 16 Mar 2010 04:10:08 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Mike Swaim</title>
		<link>http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/comment-page-1/#comment-20734</link>
		<dc:creator>Mike Swaim</dc:creator>
		<pubDate>Tue, 07 Jul 2009 12:59:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=2607#comment-20734</guid>
		<description>I&#039;d like to point out that this problem was solved 30+ years ago. Airlines need ACID, and run really high volume systems. The big difference is that they&#039;re not using SQL databases. AFAIK, attempts to duplicate the SABER system using a SQL database failed.
(Besides SQL databases and object databases, there are heirarchical databases. MUMPS, which is widely used in the healthcare industry uses a heirarchical database in its default implementation, I believe.)</description>
		<content:encoded><![CDATA[<p>I&#8217;d like to point out that this problem was solved 30+ years ago. Airlines need ACID, and run really high volume systems. The big difference is that they&#8217;re not using SQL databases. AFAIK, attempts to duplicate the SABER system using a SQL database failed.<br />
(Besides SQL databases and object databases, there are heirarchical databases. MUMPS, which is widely used in the healthcare industry uses a heirarchical database in its default implementation, I believe.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wedge</title>
		<link>http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/comment-page-1/#comment-20729</link>
		<dc:creator>Wedge</dc:creator>
		<pubDate>Tue, 07 Jul 2009 08:51:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=2607#comment-20729</guid>
		<description>It&#039;s interesting how today there is a lot of debate about the comparative advantages of functional programming vs. mutable-state systems (especially in distributed or multi-threaded environments), and there is also this long standing object vs. relational impedance mismatch problem. Yet it seems like not a lot of ideas have permeated the mostly arbitrary boundary between &quot;programming&quot; and &quot;databases&quot; (I suppose this is a testament to the success of the relational database model up to this point). We don&#039;t even have very good terminology to talk about non-relational databases, and there doesn&#039;t seem to be much discussion about functional programming ideas (especially immutable data) applied to databases. I think we&#039;re on the right track with versioned records and some of the distributed source control systems out there. CouchDB, big table, git, mercurial, etc, are all good experiments that I think are steps in the right direction. But you can see how limited and immature these ideas are compared to the richness and maturity of the relational db ecosystem.

Ultimately I think the peak of the relational database era is on the horizon (in the next 5-10 years) and we&#039;ll see &quot;databases&quot; founded on different models rise and become dominant (due to the fundamental scalability problems of relational data more than anything). Nevertheless, I don&#039;t think anyone today has yet found the right model/featureset that will form the core of the SQL killer data systems of the future.</description>
		<content:encoded><![CDATA[<p>It&#8217;s interesting how today there is a lot of debate about the comparative advantages of functional programming vs. mutable-state systems (especially in distributed or multi-threaded environments), and there is also this long standing object vs. relational impedance mismatch problem. Yet it seems like not a lot of ideas have permeated the mostly arbitrary boundary between &#8220;programming&#8221; and &#8220;databases&#8221; (I suppose this is a testament to the success of the relational database model up to this point). We don&#8217;t even have very good terminology to talk about non-relational databases, and there doesn&#8217;t seem to be much discussion about functional programming ideas (especially immutable data) applied to databases. I think we&#8217;re on the right track with versioned records and some of the distributed source control systems out there. CouchDB, big table, git, mercurial, etc, are all good experiments that I think are steps in the right direction. But you can see how limited and immature these ideas are compared to the richness and maturity of the relational db ecosystem.</p>
<p>Ultimately I think the peak of the relational database era is on the horizon (in the next 5-10 years) and we&#8217;ll see &#8220;databases&#8221; founded on different models rise and become dominant (due to the fundamental scalability problems of relational data more than anything). Nevertheless, I don&#8217;t think anyone today has yet found the right model/featureset that will form the core of the SQL killer data systems of the future.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Lemire</title>
		<link>http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/comment-page-1/#comment-20697</link>
		<dc:creator>Daniel Lemire</dc:creator>
		<pubDate>Mon, 06 Jul 2009 16:51:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=2607#comment-20697</guid>
		<description>One clean way to deal with some of these problems is through Resource Versioning (ETags):

http://code.google.com/apis/gdata/docs/2.0/reference.html#ResourceVersioning

The trick is this: the data you get might be stale, but because it is tagged with a version number, it is not inconsistent with anybody&#039;s else version. If each of us got some data about the number of remaining books, and our numbers disagree, then whoever has the latest version number knows he has the right version.

In this universe, data is immutable. That is, you get  values as...

&quot;inventory of book x at revision number y was z&quot;

This is a fact. All servers will agree on it, no matter what. Compare with the simpler

&quot;inventory of book x is z&quot;

This can be inconsistent from server to server. 

I think that trying to build scalable systems without etags is crazy.

Of course, one central authority must grant these version numbers. Someone, somewhere, must have the definitive say on the number of books remaining. But with a physical resource like books, that&#039;s unavoidable, isn&#039;t it?

Moreover, you can partition the authority. For example, one server is in charge of all of the books starting with the letter A. (Better yet, using consistent hashing... http://michaelnielsen.org/blog/?p=613)
 
BTW I don&#039;t think it happens often that Amazon sells the same book twice. If these types of errors happen due to database errors, I&#039;d like to know about it.</description>
		<content:encoded><![CDATA[<p>One clean way to deal with some of these problems is through Resource Versioning (ETags):</p>
<p><a href="http://code.google.com/apis/gdata/docs/2.0/reference.html#ResourceVersioning" rel="nofollow">http://code.google.com/apis/gdata/docs/2.0/reference.html#ResourceVersioning</a></p>
<p>The trick is this: the data you get might be stale, but because it is tagged with a version number, it is not inconsistent with anybody&#8217;s else version. If each of us got some data about the number of remaining books, and our numbers disagree, then whoever has the latest version number knows he has the right version.</p>
<p>In this universe, data is immutable. That is, you get  values as&#8230;</p>
<p>&#8220;inventory of book x at revision number y was z&#8221;</p>
<p>This is a fact. All servers will agree on it, no matter what. Compare with the simpler</p>
<p>&#8220;inventory of book x is z&#8221;</p>
<p>This can be inconsistent from server to server. </p>
<p>I think that trying to build scalable systems without etags is crazy.</p>
<p>Of course, one central authority must grant these version numbers. Someone, somewhere, must have the definitive say on the number of books remaining. But with a physical resource like books, that&#8217;s unavoidable, isn&#8217;t it?</p>
<p>Moreover, you can partition the authority. For example, one server is in charge of all of the books starting with the letter A. (Better yet, using consistent hashing&#8230; <a href="http://michaelnielsen.org/blog/?p=613)" rel="nofollow">http://michaelnielsen.org/blog/?p=613)</a></p>
<p>BTW I don&#8217;t think it happens often that Amazon sells the same book twice. If these types of errors happen due to database errors, I&#8217;d like to know about it.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
