Live data from Hacker News

Doozer: a consistent, highly-available data store from Heroku labs

xph.us

11–15 of 15 posts

Re: Doozer: a consistent, highly-available data store from Heroku labs

#11
post #10

There are a number of other systems that allow this same approach of consistency and high availability. For example, Cassandra, which is freely available (as required by the poster), appears to be able to give you this behavior if you set ConsistencyLevel to QUORUM. Clustrix, the company I work for, offers a full SQL data store with similar quorum semantics. However, it's not free. Google Megastore allows similar con…

You actually cannot implement strongly consistent compare-and-set on a quorum based system. This is because quorums do not have strong failure semantics.

For example, lets say you have key A with data 'foo' living on all 3 nodes of a quorum based system. You perform a write to key A with data 'bar' and one host accepts the write and two fail resulting in your client getting a failure back. Reading data back from all nodes will return 'foo'. Time goes along and read repair or some other anti-entropy process kicks in a replicates 'bar' to the other hosts. Now a read for key A returns 'bar'. In short, when a client performs a write and gets a failure back they actually have no idea if it will update the data store or not. You cannot implement compare-and-set in that type of environment.

Re: Doozer: a consistent, highly-available data store from Heroku labs

#12
post #11
post #10

There are a number of other systems that allow this same approach of consistency and high availability. For example, Cassandra, which is freely available (as required by the poster), appears to be able to give you this behavior if you set ConsistencyLevel to QUORUM. Clustrix, the company I work for, offers a full SQL data store with similar quorum semantics. However, it's not free. Google Megastore allows similar con…

You actually cannot implement strongly consistent compare-and-set on a quorum based system. This is because quorums do not have strong failure semantics. For example, lets say you have key A with data 'foo' living on all 3 nodes of a quorum based system. You perform a write to key A with data 'bar' and one host accepts the write and two fail resulting in your client getting a failure back. Reading data back from all…

That is not how paxos works. It guarantees that all hosts in the system learn the same sequence of writes. The scenario where "one host accepts the write and two fail" does not happen. This is proved in http://research.microsoft.com/users/lamport/pubs/paxos-simpl...

Re: Doozer: a consistent, highly-available data store from Heroku labs

#13
post #12
post #11

Earlier quoted context omitted.

You actually cannot implement strongly consistent compare-and-set on a quorum based system. This is because quorums do not have strong failure semantics. For example, lets say you have key A with data 'foo' living on all 3 nodes of a quorum based system. You perform a write to key A with data 'bar' and one host accepts the write and two fail resulting in your client getting a failure back. Reading data back from all…

That is not how paxos works. It guarantees that all hosts in the system learn the same sequence of writes. The scenario where "one host accepts the write and two fail" does not happen. This is proved in http://research.microsoft.com/users/lamport/pubs/paxos-simpl...

Right, I was talking about the quorum semantics as used by systems like Dynamo and Cassandra. Paxos provides a much stronger guarantee than simple quorums.

Re: Doozer: a consistent, highly-available data store from Heroku labs

#14
"The only freely-available tool that attempts to provide both of these is zookeeper, but zookeeper is specialized, focused on locking and server management. We need a general-purpose tool that provides the same guarantees in a clean, well-designed package."

I think they dismissed Zookeeper too quickly without trying to understand it first. The zookeeper primitives (get/set nodes and their children) seems simpler and cleaner than doozer is client protocol, AFAICT. Zookeeper should scale better (especially for readers) than typical Paxos based systems as well.

Re: Doozer: a consistent, highly-available data store from Heroku labs

#15
post #14

"The only freely-available tool that attempts to provide both of these is zookeeper, but zookeeper is specialized, focused on locking and server management. We need a general-purpose tool that provides the same guarantees in a clean, well-designed package." I think they dismissed Zookeeper too quickly without trying to understand it first. The zookeeper primitives (get/set nodes and their children) seems simpler and…

The problem with zookeeper is there is no safe way to dynamically change the nodes in the cluster. That's where Paxos comes in since it is provably correct even with nodes joining and leaving.
Post reply on HN