<?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: Oracle Coherence vs Gigaspaces XAP</title>
	<atom:link href="http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/feed/" rel="self" type="application/rss+xml" />
	<link>http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/</link>
	<description>Building software that matters</description>
	<lastBuildDate>Fri, 12 Mar 2010 16:28:45 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: David Brown</title>
		<link>http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/comment-page-1/#comment-54709</link>
		<dc:creator>David Brown</dc:creator>
		<pubDate>Wed, 15 Jul 2009 17:33:11 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/?p=934#comment-54709</guid>
		<description>Since SEs and PMs from the other companies have chimed in, I&#039;ll add my opinion.  Having worked for Oracle and now working for GemStone on GemFire, I have done a lot of comparison of the products.

Gojko, I applaud your efforts to help people compare the products.  In my experience, doing my own comparisons and helping customers do theirs, the differences between the products tend not to show up until you go much deeper.  While the features you describe are common to all of the top products, each of the vendors implement their solutions using some significant differences in their underlying technology, and these differences tend to show up only in full-scale performance tests.  These tests, unfortunately, are tricky to build and execute, and if you decide to undertake them, I highly recommend you engage each vendor to help you configure and tune each test.  

All cluster products will tend to offer some level of dynamic capacity capability.  However, without the right options and tuning parameters, small performance problems can cascade into total cluster collapse. This is one area that we have dedicated significant effort to, making sure the cluster behaves well in cases of adversity (node failure, congested networks, slow message consumers, etc).  This is an extremely difficult problem to solve, and is one of the biggest reasons for choosing a commercial product over an open-source solution.  It is also a difference that doesn&#039;t show up with a paper comparison of the products.  

I would echo the comments from some of the other folks that warn of the problems of transactions, distributed or otherwise.  The products tend to support them, but that doesn&#039;t make their use a good idea.  Yes, it takes some effort to code around the edge conditions properly, but this effort is more than rewarded when it comes to the overall scalability of the system.  I would direct you to an independent (well, now he works for Microsoft) paper on the topic by Pat Helland (http://www-db.cs.wisc.edu/cidr/cidr2007/papers/cidr07p15.pdf).

Good luck with your project.

David Brown - GemStone GemFire</description>
		<content:encoded><![CDATA[<p>Since SEs and PMs from the other companies have chimed in, I&#8217;ll add my opinion.  Having worked for Oracle and now working for GemStone on GemFire, I have done a lot of comparison of the products.</p>
<p>Gojko, I applaud your efforts to help people compare the products.  In my experience, doing my own comparisons and helping customers do theirs, the differences between the products tend not to show up until you go much deeper.  While the features you describe are common to all of the top products, each of the vendors implement their solutions using some significant differences in their underlying technology, and these differences tend to show up only in full-scale performance tests.  These tests, unfortunately, are tricky to build and execute, and if you decide to undertake them, I highly recommend you engage each vendor to help you configure and tune each test.  </p>
<p>All cluster products will tend to offer some level of dynamic capacity capability.  However, without the right options and tuning parameters, small performance problems can cascade into total cluster collapse. This is one area that we have dedicated significant effort to, making sure the cluster behaves well in cases of adversity (node failure, congested networks, slow message consumers, etc).  This is an extremely difficult problem to solve, and is one of the biggest reasons for choosing a commercial product over an open-source solution.  It is also a difference that doesn&#8217;t show up with a paper comparison of the products.  </p>
<p>I would echo the comments from some of the other folks that warn of the problems of transactions, distributed or otherwise.  The products tend to support them, but that doesn&#8217;t make their use a good idea.  Yes, it takes some effort to code around the edge conditions properly, but this effort is more than rewarded when it comes to the overall scalability of the system.  I would direct you to an independent (well, now he works for Microsoft) paper on the topic by Pat Helland (<a href="http://www-db.cs.wisc.edu/cidr/cidr2007/papers/cidr07p15.pdf" rel="nofollow">http://www-db.cs.wisc.edu/cidr/cidr2007/papers/cidr07p15.pdf</a>).</p>
<p>Good luck with your project.</p>
<p>David Brown &#8211; GemStone GemFire</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alejandro Ramallo</title>
		<link>http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/comment-page-1/#comment-53180</link>
		<dc:creator>Alejandro Ramallo</dc:creator>
		<pubDate>Sun, 28 Jun 2009 19:11:58 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/?p=934#comment-53180</guid>
		<description>Hi,

&gt; Gigaspaces is a JavaSpaces implementation, and as such it is ideal for building 
&gt; master/worker (task dispatching) solutions.

Ideal but not limited to. Gigaspaces gives you JINI + Project RIO + JAVASPACE.

I never considered the benefits of a Javaspaces without considering those of JINI, maybe that is what is missing in these discussions?


Ale</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>&gt; Gigaspaces is a JavaSpaces implementation, and as such it is ideal for building<br />
&gt; master/worker (task dispatching) solutions.</p>
<p>Ideal but not limited to. Gigaspaces gives you JINI + Project RIO + JAVASPACE.</p>
<p>I never considered the benefits of a Javaspaces without considering those of JINI, maybe that is what is missing in these discussions?</p>
<p>Ale</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian Oliver</title>
		<link>http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/comment-page-1/#comment-51709</link>
		<dc:creator>Brian Oliver</dc:creator>
		<pubDate>Sun, 14 Jun 2009 21:28:48 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/?p=934#comment-51709</guid>
		<description>Hi Gojko,

I think your explanation of LLR XA resources is incorrect.  From what I know (which could be wrong ;) LLR resources are prepared usually prepared last, but committed first and hence the problem you attribute to inconsistent state is incorrect.  It has nothing to do with Coherence (per say) but is often a problem with underlying XA TMs.  Having build a non-logging XA resource for Coherence that is part of a multi-billion dollar trading platform, I&#039;m pretty confident that it&#039;s ok.

-- Brian

BTW: If the last resource in any XA transaction commit fails, you&#039;re pretty much in an &quot;unstable state&quot;, especially if the resource can&#039;t be recovered cleanly.  LLR basically makes it explicit and lowers the XA implementation SLAs ;).  Failure during perpare is always.  Failure during commit typically means someone has to talk to a DBA.</description>
		<content:encoded><![CDATA[<p>Hi Gojko,</p>
<p>I think your explanation of LLR XA resources is incorrect.  From what I know (which could be wrong <img src='http://gojko.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  LLR resources are prepared usually prepared last, but committed first and hence the problem you attribute to inconsistent state is incorrect.  It has nothing to do with Coherence (per say) but is often a problem with underlying XA TMs.  Having build a non-logging XA resource for Coherence that is part of a multi-billion dollar trading platform, I&#8217;m pretty confident that it&#8217;s ok.</p>
<p>&#8211; Brian</p>
<p>BTW: If the last resource in any XA transaction commit fails, you&#8217;re pretty much in an &#8220;unstable state&#8221;, especially if the resource can&#8217;t be recovered cleanly.  LLR basically makes it explicit and lowers the XA implementation SLAs <img src='http://gojko.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .  Failure during perpare is always.  Failure during commit typically means someone has to talk to a DBA.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cameron Purdy</title>
		<link>http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/comment-page-1/#comment-50938</link>
		<dc:creator>Cameron Purdy</dc:creator>
		<pubDate>Tue, 09 Jun 2009 02:48:14 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/?p=934#comment-50938</guid>
		<description>Hi -

&gt; The reason why I suggested Gigaspaces over Coherence for 
&gt; processing is that it is built around a processing model and 
&gt; has a lot of flexibility in terms of how you dispatch tasks

Coherence is a fully clustered data grid, and as such it is ideal for building large-scale state machines.

Gigaspaces is a JavaSpaces implementation, and as such it is ideal for building master/worker (task dispatching) solutions.

I wish you luck with your selection, and suggest you keep an eye on the Coherence Incubator (http://coherence.oracle.com/display/INCUBATOR/) for more than just the command pattern ;-)

Peace,

Cameron Purdy &#124; Oracle Coherence 
http://coherence.oracle.com/</description>
		<content:encoded><![CDATA[<p>Hi -</p>
<p>&gt; The reason why I suggested Gigaspaces over Coherence for<br />
&gt; processing is that it is built around a processing model and<br />
&gt; has a lot of flexibility in terms of how you dispatch tasks</p>
<p>Coherence is a fully clustered data grid, and as such it is ideal for building large-scale state machines.</p>
<p>Gigaspaces is a JavaSpaces implementation, and as such it is ideal for building master/worker (task dispatching) solutions.</p>
<p>I wish you luck with your selection, and suggest you keep an eye on the Coherence Incubator (<a href="http://coherence.oracle.com/display/INCUBATOR/" rel="nofollow">http://coherence.oracle.com/display/INCUBATOR/</a>) for more than just the command pattern <img src='http://gojko.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Peace,</p>
<p>Cameron Purdy | Oracle Coherence<br />
<a href="http://coherence.oracle.com/" rel="nofollow">http://coherence.oracle.com/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gojko</title>
		<link>http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/comment-page-1/#comment-50444</link>
		<dc:creator>gojko</dc:creator>
		<pubDate>Fri, 05 Jun 2009 10:49:18 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/?p=934#comment-50444</guid>
		<description>Georgi,

Like any other tool, XA has its use and can help if used properly or hurt a lot if misused. Not every problem in a distributed system is the same, and some require different solutions than others.  XA is a performance hog and should not be used for frequent operations, but at least on the systems that I work with there are loads of operations that run once or twice a second where you aren&#039;t going to notice a big difference. Reference data is often read-mostly and not updated that often. Caching it makes a lot of sense and that is where data grids come in. 

If you are putting a cache on top of an existing system where the database is the most authoritative source of truth, changing all the apps is typically too costly. Database still has to remain the source of truth but updates to reference data should be coordinated with the cache - often by enqueuing a notification to change the cache or changing it directly. Unless you are using Oracle AQ or something similar which makes the queues use the same transaction manager as the database,  there you have two resources in a transaction: the database and a queue or cache. And that is where full XA support really comes in. It guarantees that the database update and the queue/cache update will both succeed or fail so that there is no data corruption or inconsistency in the cache. Coherence has LLR XA support so there is a chance that the database update can go through and the grid commit fails because of temporary network issues.  Without proper XA, you need to code around this, make simpler atomic operations that wrap one resource in other&#039;s transaction and recover from errors manually etc. So a few cleverly designed XA operations can make the bulk of code where performance isn&#039;t such an issue a lot simpler, easier to maintain, less error prone and easier to troubleshoot, leaving you with more time to deal with parts of the system where you really need to focus and where XA should not apply. 

I just like the option of having it there if I need it and when I need it. 

The reason why I suggested Gigaspaces over Coherence for processing is that it is built around a processing model and has a lot of flexibility in terms of how you dispatch tasks, how they are picked up and processed, automatically hides the target objects frm other processors in parallel, has spring declarative transaction support and data mirroring etc, so it allows you to write parallel processing apps efficiently. Command pattern in Coherence is a good start, but not as fully-featured as Gigaspaces. That doesn&#039;t mean that you cannot do parallel processing with Coherence - of course you can - but in my opinion it is easier to write it with Gigaspaces because the framework gives you more.</description>
		<content:encoded><![CDATA[<p>Georgi,</p>
<p>Like any other tool, XA has its use and can help if used properly or hurt a lot if misused. Not every problem in a distributed system is the same, and some require different solutions than others.  XA is a performance hog and should not be used for frequent operations, but at least on the systems that I work with there are loads of operations that run once or twice a second where you aren&#8217;t going to notice a big difference. Reference data is often read-mostly and not updated that often. Caching it makes a lot of sense and that is where data grids come in. </p>
<p>If you are putting a cache on top of an existing system where the database is the most authoritative source of truth, changing all the apps is typically too costly. Database still has to remain the source of truth but updates to reference data should be coordinated with the cache &#8211; often by enqueuing a notification to change the cache or changing it directly. Unless you are using Oracle AQ or something similar which makes the queues use the same transaction manager as the database,  there you have two resources in a transaction: the database and a queue or cache. And that is where full XA support really comes in. It guarantees that the database update and the queue/cache update will both succeed or fail so that there is no data corruption or inconsistency in the cache. Coherence has LLR XA support so there is a chance that the database update can go through and the grid commit fails because of temporary network issues.  Without proper XA, you need to code around this, make simpler atomic operations that wrap one resource in other&#8217;s transaction and recover from errors manually etc. So a few cleverly designed XA operations can make the bulk of code where performance isn&#8217;t such an issue a lot simpler, easier to maintain, less error prone and easier to troubleshoot, leaving you with more time to deal with parts of the system where you really need to focus and where XA should not apply. </p>
<p>I just like the option of having it there if I need it and when I need it. </p>
<p>The reason why I suggested Gigaspaces over Coherence for processing is that it is built around a processing model and has a lot of flexibility in terms of how you dispatch tasks, how they are picked up and processed, automatically hides the target objects frm other processors in parallel, has spring declarative transaction support and data mirroring etc, so it allows you to write parallel processing apps efficiently. Command pattern in Coherence is a good start, but not as fully-featured as Gigaspaces. That doesn&#8217;t mean that you cannot do parallel processing with Coherence &#8211; of course you can &#8211; but in my opinion it is easier to write it with Gigaspaces because the framework gives you more.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
