<?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: Eventual Consistency Is Just Caching</title>
	<atom:link href="http://www.udidahan.com/2010/02/21/eventual-consistency-is-just-caching/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com/2010/02/21/eventual-consistency-is-just-caching/</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Wed, 08 Sep 2010 18:14:32 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2010/02/21/eventual-consistency-is-just-caching/comment-page-1/#comment-37057</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Sun, 28 Feb 2010 14:24:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1182#comment-37057</guid>
		<description>Jeff,

There are distributed caches that actually provide this. The fact that memcached doesn&#039;t can be taken a single anecdote - no proof either way.

The &quot;get over it&quot; was *not* to say to people &quot;you don&#039;t need to learn how caches work&quot;. Rather, that people make such a fuss about eventual consistency and how much more complicated it makes things, but use caches that have similar consistency effects without thinking twice. It was to those people who I was saying &quot;get over it&quot;.</description>
		<content:encoded><![CDATA[<p>Jeff,</p>
<p>There are distributed caches that actually provide this. The fact that memcached doesn&#8217;t can be taken a single anecdote &#8211; no proof either way.</p>
<p>The &#8220;get over it&#8221; was *not* to say to people &#8220;you don&#8217;t need to learn how caches work&#8221;. Rather, that people make such a fuss about eventual consistency and how much more complicated it makes things, but use caches that have similar consistency effects without thinking twice. It was to those people who I was saying &#8220;get over it&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Darcy</title>
		<link>http://www.udidahan.com/2010/02/21/eventual-consistency-is-just-caching/comment-page-1/#comment-37056</link>
		<dc:creator>Jeff Darcy</dc:creator>
		<pubDate>Sat, 27 Feb 2010 02:02:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1182#comment-37056</guid>
		<description>Sorry, Udi, but that&#039;s just not an accurate statement.  Eventual consistency requires a protocol which completes in bounded time and guarantees that (in the absence of other writes) reads from all nodes will converge on the same value.  Many caches lack such a protocol and can remain inconsistent with their underlying stores indefinitely.  Memcached is the best known example of a cache deployed &quot;when the database can&#039;t handle it&quot; and fits into this category.  That&#039;s not eventual consistency; that&#039;s no consistency at all.  &quot;Get over it&quot; is a poor excuse for failing to learn about an important piece of technology.</description>
		<content:encoded><![CDATA[<p>Sorry, Udi, but that&#8217;s just not an accurate statement.  Eventual consistency requires a protocol which completes in bounded time and guarantees that (in the absence of other writes) reads from all nodes will converge on the same value.  Many caches lack such a protocol and can remain inconsistent with their underlying stores indefinitely.  Memcached is the best known example of a cache deployed &#8220;when the database can&#8217;t handle it&#8221; and fits into this category.  That&#8217;s not eventual consistency; that&#8217;s no consistency at all.  &#8220;Get over it&#8221; is a poor excuse for failing to learn about an important piece of technology.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2010/02/21/eventual-consistency-is-just-caching/comment-page-1/#comment-37045</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Tue, 23 Feb 2010 17:12:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1182#comment-37045</guid>
		<description>Mark,

This post is primarily to ask for a reality check on developer reticence around eventual consistency. For a broader discussion on eventual consistency, see my posts on CQRS.

&gt; the user will naturally attempt to create another client 
&gt; again resulting in duplicates

It won&#039;t result in duplicates if the command-side contains logic which prevents it. The command-side is responsible exactly for preventing the kinds of race conditions you described. This can be as simple as a unique constraint in its DB.

Hope that answers your questions.</description>
		<content:encoded><![CDATA[<p>Mark,</p>
<p>This post is primarily to ask for a reality check on developer reticence around eventual consistency. For a broader discussion on eventual consistency, see my posts on CQRS.</p>
<p>> the user will naturally attempt to create another client<br />
> again resulting in duplicates</p>
<p>It won&#8217;t result in duplicates if the command-side contains logic which prevents it. The command-side is responsible exactly for preventing the kinds of race conditions you described. This can be as simple as a unique constraint in its DB.</p>
<p>Hope that answers your questions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Morning Brew - Chris Alcock &#187; The Morning Brew #544</title>
		<link>http://www.udidahan.com/2010/02/21/eventual-consistency-is-just-caching/comment-page-1/#comment-37040</link>
		<dc:creator>The Morning Brew - Chris Alcock &#187; The Morning Brew #544</dc:creator>
		<pubDate>Mon, 22 Feb 2010 08:41:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1182#comment-37040</guid>
		<description>[...] Eventual Consistency Is Just Caching - Udi Dahan cuts through all the bother about Eventual Consistency reminding us that Eventual Consistency is what we have whenever we Cache. [...]</description>
		<content:encoded><![CDATA[<p>[...] Eventual Consistency Is Just Caching &#8211; Udi Dahan cuts through all the bother about Eventual Consistency reminding us that Eventual Consistency is what we have whenever we Cache. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eventual consistency is just caching ? &#124; Scalable web architectures</title>
		<link>http://www.udidahan.com/2010/02/21/eventual-consistency-is-just-caching/comment-page-1/#comment-37039</link>
		<dc:creator>Eventual consistency is just caching ? &#124; Scalable web architectures</dc:creator>
		<pubDate>Mon, 22 Feb 2010 04:53:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1182#comment-37039</guid>
		<description>[...] caching, eventually consistent  So there is someone who thinks “eventual consistency is just caching”.&#160; Though I liked the idea of discussing this, I don’t agree with Udi’s views on [...]</description>
		<content:encoded><![CDATA[<p>[...] caching, eventually consistent  So there is someone who thinks “eventual consistency is just caching”.&#160; Though I liked the idea of discussing this, I don’t agree with Udi’s views on [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Phillips</title>
		<link>http://www.udidahan.com/2010/02/21/eventual-consistency-is-just-caching/comment-page-1/#comment-37037</link>
		<dc:creator>Mark Phillips</dc:creator>
		<pubDate>Mon, 22 Feb 2010 03:03:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1182#comment-37037</guid>
		<description>Hi Udi,

I understand the need for data cache for performance reasons but often it is just not appropriate to use it in all cases.  You wouldn&#039;t cache your entire domain would you, or is this how we should be treating the UI views in your opinion?

As nice as this may sound it stands in the face of some customer requirements such as the need to see an updated view of records that they may have just added a record to.  To explain further I&#039;ll pose a real scenario:

A user must perform a search for a client (against the query side I&#039;m assuming) to use in some business context.  If they cannot find the client via some search then a new client is to be created by the user and used in the process.  So, if the user creates this new client and then performs a search for that client only to not find it because the cache/readonly view/query side or whatever does not reflect the new data yet, the user will naturally attempt to create another client again resulting in duplicates.  This is not acceptable to the business and is (one of) the reason eventual consistency doesn&#039;t help at times.

Mark</description>
		<content:encoded><![CDATA[<p>Hi Udi,</p>
<p>I understand the need for data cache for performance reasons but often it is just not appropriate to use it in all cases.  You wouldn&#8217;t cache your entire domain would you, or is this how we should be treating the UI views in your opinion?</p>
<p>As nice as this may sound it stands in the face of some customer requirements such as the need to see an updated view of records that they may have just added a record to.  To explain further I&#8217;ll pose a real scenario:</p>
<p>A user must perform a search for a client (against the query side I&#8217;m assuming) to use in some business context.  If they cannot find the client via some search then a new client is to be created by the user and used in the process.  So, if the user creates this new client and then performs a search for that client only to not find it because the cache/readonly view/query side or whatever does not reflect the new data yet, the user will naturally attempt to create another client again resulting in duplicates.  This is not acceptable to the business and is (one of) the reason eventual consistency doesn&#8217;t help at times.</p>
<p>Mark</p>
]]></content:encoded>
	</item>
</channel>
</rss>
