<?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: Shared Nothing v.s. Shared Disk Architectures: An Independent View</title>
	<atom:link href="http://www.benstopford.com/2009/11/24/understanding-the-shared-nothing-architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.benstopford.com/2009/11/24/understanding-the-shared-nothing-architecture/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
	<description>Gently flexing the grid</description>
	<lastBuildDate>Thu, 19 Jan 2012 21:17:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: ben</title>
		<link>http://www.benstopford.com/2009/11/24/understanding-the-shared-nothing-architecture/comment-page-1/#comment-1140</link>
		<dc:creator>ben</dc:creator>
		<pubDate>Thu, 07 Jul 2011 07:26:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.benstopford.com/?p=376#comment-1140</guid>
		<description>That&#039;s very true Dominique and a point close to my own heart.  At RBS we&#039;ve put a lot of effort into the problem of balancing replication and partitioning with the result being the Connected Replication pattern discussed &lt;a href=&quot;http://www.benstopford.com/2011/01/27/beyond-the-data-grid-building-a-normalised-data-store-using-coherence/&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;. The pattern splits data into a star schema and denormalises only the Dimensions. The trick being that the absolute minimum amount of Dimension data is replicated around the grid by constantly tracking what Dimensions are connected to Facts. I&#039;ll update the post to reflect your point. Thanks</description>
		<content:encoded><![CDATA[<p>That&#8217;s very true Dominique and a point close to my own heart.  At RBS we&#8217;ve put a lot of effort into the problem of balancing replication and partitioning with the result being the Connected Replication pattern discussed <a href="http://www.benstopford.com/2011/01/27/beyond-the-data-grid-building-a-normalised-data-store-using-coherence/" rel="nofollow">here</a>. The pattern splits data into a star schema and denormalises only the Dimensions. The trick being that the absolute minimum amount of Dimension data is replicated around the grid by constantly tracking what Dimensions are connected to Facts. I&#8217;ll update the post to reflect your point. Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dominique De Vito</title>
		<link>http://www.benstopford.com/2009/11/24/understanding-the-shared-nothing-architecture/comment-page-1/#comment-1139</link>
		<dc:creator>Dominique De Vito</dc:creator>
		<pubDate>Wed, 06 Jul 2011 14:10:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.benstopford.com/?p=376#comment-1139</guid>
		<description>Good article. Thanks.

Let&#039;s mention also, here, the denormalization method that is one method, used in SN architecture, for enabling all related data to hold on the same node.</description>
		<content:encoded><![CDATA[<p>Good article. Thanks.</p>
<p>Let&#8217;s mention also, here, the denormalization method that is one method, used in SN architecture, for enabling all related data to hold on the same node.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Simon Griffiths</title>
		<link>http://www.benstopford.com/2009/11/24/understanding-the-shared-nothing-architecture/comment-page-1/#comment-1072</link>
		<dc:creator>Simon Griffiths</dc:creator>
		<pubDate>Sun, 09 Jan 2011 02:07:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.benstopford.com/?p=376#comment-1072</guid>
		<description>Ben, an excellent precis of the problem. My expertise is in the large scale DW and I&#039;d like to add a few comments.

One of the interesting aspects of data warehousing is that in many cases, data is only ever added to the database and rows should not be updated. This is often a guiding principle and applies to both fact based and dimensional data. This is often implemented through the use of effective dates. In that context, the requirement to &#039;lock&#039; rows for update is substantially reduced. In this situation the main limiting factor that you have identified is substantially reduced in its effect for SD. How about the following as a suggested amendment :

&lt;em&gt;Shared Disk Architectures are write limited should they require locks that must be coordinated across the cluster. Shared Nothing Architectures are limited should they require a distributed two phase commit.&lt;/em&gt;

In fact there is then a close relationship between the two limiting factors - essentially both systems are limited by the requirement to co-ordinate data change across the cluster. In the case of SN, the co-ordination is required to ensure two or more changes are co-ordinated, in the case of SD the co-ordination is required to co-ordinate competing write requests.

This observation is also relevant when considering partitioning of data in a SD system, If data is only ever being added, then data-loading becomes straightforward to parallelise up to the level of a load process per data partition and the SN system becomes the equivalent of a SN system for the load process.

When considering the case of complex queries, then the second limitation of SN you mention (data shipping) becomes the main limiting factor. Again in a DW use case, complex queries that include many tens of joins are the norm - queries with 20-30 are not unusual. Thus the output of each join action will probably not be partitioned on the same key as the next join action and so cross-node shipping of data becomes the norm rather then the exception. The bottleneck for query performance then becomes the network between the nodes. Interestingly, this provides a performance profile for such queries which can provide a reduction in performance as the number of nodes in a SN cluster increases - for 2 nodes, 50% of the data has to be shipped, for 10 nodes, that becomes 90%. I have seen situations where scaling the cluster on SN is near linear until the network is saturated, after that, performance will be flat on extending the cluster. However, as congestion on the network increases, performance will then degrade and so the addition of an node to an SN cluster can result in slower query times.  

A final point I would add is that a major factor effecting the performance of many implementations of SN in data warehousing is data skew. Where the partitioning (or sharding) is determined by the value of a data item then if that data item has anything other than a symmetric distribution then it&#039;s likely that the partitions will have unequal sizes and thus unequal scan times. This is not mitigated by hashing (as hashing changes data location but not distribution) but is mitigated by a round-robin partitioning algorithm.</description>
		<content:encoded><![CDATA[<p>Ben, an excellent precis of the problem. My expertise is in the large scale DW and I&#8217;d like to add a few comments.</p>
<p>One of the interesting aspects of data warehousing is that in many cases, data is only ever added to the database and rows should not be updated. This is often a guiding principle and applies to both fact based and dimensional data. This is often implemented through the use of effective dates. In that context, the requirement to &#8216;lock&#8217; rows for update is substantially reduced. In this situation the main limiting factor that you have identified is substantially reduced in its effect for SD. How about the following as a suggested amendment :</p>
<p><em>Shared Disk Architectures are write limited should they require locks that must be coordinated across the cluster. Shared Nothing Architectures are limited should they require a distributed two phase commit.</em></p>
<p>In fact there is then a close relationship between the two limiting factors &#8211; essentially both systems are limited by the requirement to co-ordinate data change across the cluster. In the case of SN, the co-ordination is required to ensure two or more changes are co-ordinated, in the case of SD the co-ordination is required to co-ordinate competing write requests.</p>
<p>This observation is also relevant when considering partitioning of data in a SD system, If data is only ever being added, then data-loading becomes straightforward to parallelise up to the level of a load process per data partition and the SN system becomes the equivalent of a SN system for the load process.</p>
<p>When considering the case of complex queries, then the second limitation of SN you mention (data shipping) becomes the main limiting factor. Again in a DW use case, complex queries that include many tens of joins are the norm &#8211; queries with 20-30 are not unusual. Thus the output of each join action will probably not be partitioned on the same key as the next join action and so cross-node shipping of data becomes the norm rather then the exception. The bottleneck for query performance then becomes the network between the nodes. Interestingly, this provides a performance profile for such queries which can provide a reduction in performance as the number of nodes in a SN cluster increases &#8211; for 2 nodes, 50% of the data has to be shipped, for 10 nodes, that becomes 90%. I have seen situations where scaling the cluster on SN is near linear until the network is saturated, after that, performance will be flat on extending the cluster. However, as congestion on the network increases, performance will then degrade and so the addition of an node to an SN cluster can result in slower query times.  </p>
<p>A final point I would add is that a major factor effecting the performance of many implementations of SN in data warehousing is data skew. Where the partitioning (or sharding) is determined by the value of a data item then if that data item has anything other than a symmetric distribution then it&#8217;s likely that the partitions will have unequal sizes and thus unequal scan times. This is not mitigated by hashing (as hashing changes data location but not distribution) but is mitigated by a round-robin partitioning algorithm.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ben</title>
		<link>http://www.benstopford.com/2009/11/24/understanding-the-shared-nothing-architecture/comment-page-1/#comment-1071</link>
		<dc:creator>ben</dc:creator>
		<pubDate>Wed, 05 Jan 2011 17:47:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.benstopford.com/?p=376#comment-1071</guid>
		<description>An interesting comment Jeff. I hadn&#039;t really considered the differences with respect to failure semantics. From a Coherence perspective a fair bit simpler as it&#039;s all shared nothing and there is no disk (on my current project we use messaging as a system of record, which is of course disk based but it&#039;s fire and forget). Your very point is the beauty of Coherence and the reason that a lot of folks are pushing all memory solutions. These guys are leading the way IMO (if you haven&#039;t seen it already): http://tinyurl.com/2c8vnul. However, as the use of SSD increases we may see the differences you allude to come back again!</description>
		<content:encoded><![CDATA[<p>An interesting comment Jeff. I hadn&#8217;t really considered the differences with respect to failure semantics. From a Coherence perspective a fair bit simpler as it&#8217;s all shared nothing and there is no disk (on my current project we use messaging as a system of record, which is of course disk based but it&#8217;s fire and forget). Your very point is the beauty of Coherence and the reason that a lot of folks are pushing all memory solutions. These guys are leading the way IMO (if you haven&#8217;t seen it already): <a href="http://tinyurl.com/2c8vnul" rel="nofollow">http://tinyurl.com/2c8vnul</a>. However, as the use of SSD increases we may see the differences you allude to come back again!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Darcy</title>
		<link>http://www.benstopford.com/2009/11/24/understanding-the-shared-nothing-architecture/comment-page-1/#comment-1070</link>
		<dc:creator>Jeff Darcy</dc:creator>
		<pubDate>Tue, 04 Jan 2011 14:13:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.benstopford.com/?p=376#comment-1070</guid>
		<description>Good article.  Thanks.

Besides performance/scalability, another difference between shared-disk and shared-nothing has to do with how failures are handling.  In a shared-disk model, failure of a node requires a complex recovery/failover procedure in which locks are broken, ownership of storage transferred, etc.  This is fairly well understood technology today, but - having been around since we were all inventing that technology together - I continue to see it misapplied.  In a shared-nothing model, storage and node failures can be handled the same way.  Precisely because any given piece of raw storage is &quot;stranded&quot; on one node, systems built around this paradigm tend to involve replication &quot;further out&quot; from the disks so the requesting node simply uses another replica regardless of which type of failure it was.  It&#039;s one of those cases IMO where a worse problem leads to a better solution, because the problem (half solved by the multi-controller RAID hardware that shared-disk types use and shared-nothing types eschew) can&#039;t be ignored.

Another interesting angle here, since you work on Coherence, is how some of these same principles apply to more memory-centric stores.  Even with SCI and IB available, memory is essentially shared-nothing so it makes sense if it and disk can be handled in consistent ways instead of having two different systems with sharply different performance and failure-handling characteristics.</description>
		<content:encoded><![CDATA[<p>Good article.  Thanks.</p>
<p>Besides performance/scalability, another difference between shared-disk and shared-nothing has to do with how failures are handling.  In a shared-disk model, failure of a node requires a complex recovery/failover procedure in which locks are broken, ownership of storage transferred, etc.  This is fairly well understood technology today, but &#8211; having been around since we were all inventing that technology together &#8211; I continue to see it misapplied.  In a shared-nothing model, storage and node failures can be handled the same way.  Precisely because any given piece of raw storage is &#8220;stranded&#8221; on one node, systems built around this paradigm tend to involve replication &#8220;further out&#8221; from the disks so the requesting node simply uses another replica regardless of which type of failure it was.  It&#8217;s one of those cases IMO where a worse problem leads to a better solution, because the problem (half solved by the multi-controller RAID hardware that shared-disk types use and shared-nothing types eschew) can&#8217;t be ignored.</p>
<p>Another interesting angle here, since you work on Coherence, is how some of these same principles apply to more memory-centric stores.  Even with SCI and IB available, memory is essentially shared-nothing so it makes sense if it and disk can be handled in consistent ways instead of having two different systems with sharply different performance and failure-handling characteristics.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hal</title>
		<link>http://www.benstopford.com/2009/11/24/understanding-the-shared-nothing-architecture/comment-page-1/#comment-20</link>
		<dc:creator>Hal</dc:creator>
		<pubDate>Wed, 09 Dec 2009 13:38:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.benstopford.com/?p=376#comment-20</guid>
		<description>Good precis of the issues. Nice bit of cynicism at the end to warn that &quot;academic&quot; paper is indeed marketing material. PS: Didn&#039;t realise the term Shared Nothing was as old as that - good to know that there is Nothing new in this world.</description>
		<content:encoded><![CDATA[<p>Good precis of the issues. Nice bit of cynicism at the end to warn that &#8220;academic&#8221; paper is indeed marketing material. PS: Didn&#8217;t realise the term Shared Nothing was as old as that &#8211; good to know that there is Nothing new in this world.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Wilson</title>
		<link>http://www.benstopford.com/2009/11/24/understanding-the-shared-nothing-architecture/comment-page-1/#comment-18</link>
		<dc:creator>Andrew Wilson</dc:creator>
		<pubDate>Thu, 03 Dec 2009 09:20:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.benstopford.com/?p=376#comment-18</guid>
		<description>Nice, lots of good background reading.  Thanks, A.</description>
		<content:encoded><![CDATA[<p>Nice, lots of good background reading.  Thanks, A.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

