<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: The Multimaster Replication Problem</title>
	<atom:link href="http://blog.fedecarg.com/2009/01/02/the-multimaster-replication-problem/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fedecarg.com/2009/01/02/the-multimaster-replication-problem/</link>
	<description>Simple is better than complex. Complex is better than complicated. &#124; @fedecarg</description>
	<lastBuildDate>Mon, 06 Feb 2012 14:38:53 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Federico</title>
		<link>http://blog.fedecarg.com/2009/01/02/the-multimaster-replication-problem/#comment-2017</link>
		<dc:creator><![CDATA[Federico]]></dc:creator>
		<pubDate>Sat, 03 Jan 2009 19:40:30 +0000</pubDate>
		<guid isPermaLink="false">http://phpimpact.wordpress.com/?p=1032#comment-2017</guid>
		<description><![CDATA[But then, based on what you are saying, applications like Torque, Hibernate, Propel and Doctrine violate the SoC principle because they spread work between two or more slave databases, something that a load balancer should be doing?]]></description>
		<content:encoded><![CDATA[<p>But then, based on what you are saying, applications like Torque, Hibernate, Propel and Doctrine violate the SoC principle because they spread work between two or more slave databases, something that a load balancer should be doing?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Volkan YAZICI</title>
		<link>http://blog.fedecarg.com/2009/01/02/the-multimaster-replication-problem/#comment-2016</link>
		<dc:creator><![CDATA[Volkan YAZICI]]></dc:creator>
		<pubDate>Sat, 03 Jan 2009 18:50:51 +0000</pubDate>
		<guid isPermaLink="false">http://phpimpact.wordpress.com/?p=1032#comment-2016</guid>
		<description><![CDATA[Hi Federico,

I don&#039;t want to sound like an RDBMS zealot, but from same perspective, replication could (and should?) be integrated into the application too.

I read your reply 3-4 times and everytime sentences like &quot;application does ...&quot;, &quot;application needs to ...&quot;, etc. take into my attention. That&#039;s exactly what I was trying to avoid. Application just should do its application logic job, as database just should do its persistency job. High-availability, load-balancing? Let them appear as medium layers between those components. Apples in one hand, and oranges in the other. OTOH, I don&#039;t claim such a scheme will bring less pain. But considering SoC, this obstacle will be negligible.]]></description>
		<content:encoded><![CDATA[<p>Hi Federico,</p>
<p>I don&#8217;t want to sound like an RDBMS zealot, but from same perspective, replication could (and should?) be integrated into the application too.</p>
<p>I read your reply 3-4 times and everytime sentences like &#8220;application does &#8230;&#8221;, &#8220;application needs to &#8230;&#8221;, etc. take into my attention. That&#8217;s exactly what I was trying to avoid. Application just should do its application logic job, as database just should do its persistency job. High-availability, load-balancing? Let them appear as medium layers between those components. Apples in one hand, and oranges in the other. OTOH, I don&#8217;t claim such a scheme will bring less pain. But considering SoC, this obstacle will be negligible.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Federico</title>
		<link>http://blog.fedecarg.com/2009/01/02/the-multimaster-replication-problem/#comment-2015</link>
		<dc:creator><![CDATA[Federico]]></dc:creator>
		<pubDate>Sat, 03 Jan 2009 17:24:36 +0000</pubDate>
		<guid isPermaLink="false">http://phpimpact.wordpress.com/?p=1032#comment-2015</guid>
		<description><![CDATA[Hi Volkan,

I don&#039;t agree with you and here&#039;s why. You are saying that it&#039;s a sign of bad design if the application is concerned with the availability of a database. But, that&#039;s exactly what the application does with the slaves, it checks the availability of a database before moving to the next one. This means that the application is ready to handle a slave failover. And that&#039;s a sign of good design. Of course, adding support for multiple slaves instead of a single VIP is more work, but like you said, it&#039;s not rocket science, and that&#039;s why all the applications are doing it. The concept behind multiple slaves and masters is the same. If you have 2 VIPs, 4 master set of clusters and one of the proxies goes down, your application needs to select a different VIP, otherwise your system becomes unavailable.]]></description>
		<content:encoded><![CDATA[<p>Hi Volkan,</p>
<p>I don&#8217;t agree with you and here&#8217;s why. You are saying that it&#8217;s a sign of bad design if the application is concerned with the availability of a database. But, that&#8217;s exactly what the application does with the slaves, it checks the availability of a database before moving to the next one. This means that the application is ready to handle a slave failover. And that&#8217;s a sign of good design. Of course, adding support for multiple slaves instead of a single VIP is more work, but like you said, it&#8217;s not rocket science, and that&#8217;s why all the applications are doing it. The concept behind multiple slaves and masters is the same. If you have 2 VIPs, 4 master set of clusters and one of the proxies goes down, your application needs to select a different VIP, otherwise your system becomes unavailable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Volkan YAZICI</title>
		<link>http://blog.fedecarg.com/2009/01/02/the-multimaster-replication-problem/#comment-2013</link>
		<dc:creator><![CDATA[Volkan YAZICI]]></dc:creator>
		<pubDate>Sat, 03 Jan 2009 14:28:10 +0000</pubDate>
		<guid isPermaLink="false">http://phpimpact.wordpress.com/?p=1032#comment-2013</guid>
		<description><![CDATA[I&#039;m quite declined to implement database load-balancing and high-availability in the application layer, and I think it is a sign of poor design. Yes, in case of a database proxy (e.g. sequoia, pgpool) there appears a single point of failure dilemma (actually, there are high-availability solutions for sequoio, pgpool, etc.), but, IMHO, this problem has a lower priority than seperation-of-concerns principle in such complex application frameworks you mentioned. Neither application should be concerned with the availability of the database system, nor the database system should be concerned with the application logic -- except determining access patterns, caching related studies, etc.

OTOH, consider this situation: In one of your web tiers you find out that X database host is down. How will you propogate this information to other web tiers? This is not rocket science, but it needs a considerable amount of work in the application code, which I think quite unnecessary and brings potential critical control flow bugs with itself. (Actually, this problem can be solved using some sorf of messaging infrastructure (e.g. AMQP) but this solution is almost identical to using a database proxy, completing the cycle.)]]></description>
		<content:encoded><![CDATA[<p>I&#8217;m quite declined to implement database load-balancing and high-availability in the application layer, and I think it is a sign of poor design. Yes, in case of a database proxy (e.g. sequoia, pgpool) there appears a single point of failure dilemma (actually, there are high-availability solutions for sequoio, pgpool, etc.), but, IMHO, this problem has a lower priority than seperation-of-concerns principle in such complex application frameworks you mentioned. Neither application should be concerned with the availability of the database system, nor the database system should be concerned with the application logic &#8212; except determining access patterns, caching related studies, etc.</p>
<p>OTOH, consider this situation: In one of your web tiers you find out that X database host is down. How will you propogate this information to other web tiers? This is not rocket science, but it needs a considerable amount of work in the application code, which I think quite unnecessary and brings potential critical control flow bugs with itself. (Actually, this problem can be solved using some sorf of messaging infrastructure (e.g. AMQP) but this solution is almost identical to using a database proxy, completing the cycle.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Federico</title>
		<link>http://blog.fedecarg.com/2009/01/02/the-multimaster-replication-problem/#comment-2009</link>
		<dc:creator><![CDATA[Federico]]></dc:creator>
		<pubDate>Fri, 02 Jan 2009 21:11:56 +0000</pubDate>
		<guid isPermaLink="false">http://phpimpact.wordpress.com/?p=1032#comment-2009</guid>
		<description><![CDATA[That&#039;s right, that&#039;s what they are doing. It&#039;s a very straight forward solution. Solar&#039;s database access layer looks good. It&#039;s simple and powerful. My e-mail is: fedecarg at gmail dot com. Thanks.]]></description>
		<content:encoded><![CDATA[<p>That&#8217;s right, that&#8217;s what they are doing. It&#8217;s a very straight forward solution. Solar&#8217;s database access layer looks good. It&#8217;s simple and powerful. My e-mail is: fedecarg at gmail dot com. Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Göks</title>
		<link>http://blog.fedecarg.com/2009/01/02/the-multimaster-replication-problem/#comment-2008</link>
		<dc:creator><![CDATA[Göks]]></dc:creator>
		<pubDate>Fri, 02 Jan 2009 12:46:44 +0000</pubDate>
		<guid isPermaLink="false">http://phpimpact.wordpress.com/?p=1032#comment-2008</guid>
		<description><![CDATA[@Frederico 
I can send you a Digg like solution if you send me your email address. Can&#039;t find one on the blog :/

But if I am right Digg&#039;s solution is not a failover if a master goes down. It is selecting randomly from a pool of (in Sync) slave servers, like the code I have to offer.]]></description>
		<content:encoded><![CDATA[<p>@Frederico<br />
I can send you a Digg like solution if you send me your email address. Can&#8217;t find one on the blog :/</p>
<p>But if I am right Digg&#8217;s solution is not a failover if a master goes down. It is selecting randomly from a pool of (in Sync) slave servers, like the code I have to offer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff</title>
		<link>http://blog.fedecarg.com/2009/01/02/the-multimaster-replication-problem/#comment-2006</link>
		<dc:creator><![CDATA[Jeff]]></dc:creator>
		<pubDate>Fri, 02 Jan 2009 01:22:26 +0000</pubDate>
		<guid isPermaLink="false">http://phpimpact.wordpress.com/?p=1032#comment-2006</guid>
		<description><![CDATA[Wouldn&#039;t it be nice to get a peek at Digg&#039;s code, eh? ;)]]></description>
		<content:encoded><![CDATA[<p>Wouldn&#8217;t it be nice to get a peek at Digg&#8217;s code, eh? ;)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

