http://chip.typepad.com/weblog/2011/08/why-cassandra-is-unfi...
http://chip.typepad.com/weblog/2011/08/why-cassandra-is-unfi...
The back pressure argument is laughable. In Cassandra, a write consistency of greater than ONE will ensure the data is replicated to more than one node before acknowledging to the client.
Good thing there is no god, or you should have to watch out for lightning.
While not proof in the scientific sense, this type of evidence is used as a basis for scientific theories that explain much of what we know about the world.
However, I still look forward to your detailed, rigorous rebuttal of my arguments in the previous comment.
Replication events are too important to be designed to fall on the floor. I want at any given time to know approximately how far behind replication is; I want primary write events to block until replication is at least durably scheduled; and if I pause or slow operation and wait for replication to catch up, I want to know that it _is_ caught up without holes. Cassandra fails utterly to meet these minimal requirements.
Master/slave queue is not the only way to meet these needs, but unless a replacement can fulfill the requirements, I can't responsibly switch.
With that in mind, let me pose this question to you.
Is using a Dynamo architecture (http://www.allthingsdistributed.com/2007/10/amazons_dynamo.h...) for S3 "irresponsible" of Amazon?
I submit that by this point, Amazon (among others) has convincingly demonstrated that this approach can indeed achieve a high degree of reliability.
If you agree, then I suggest that you read through the Dynamo and Eventually Consistent papers again with the "let's assume these people aren't idiots" approach, and see if you can spot what this architecture offers to achieve a similar goal to your "wait for replication to catch up" design.
I the event a replica is unavailable for a write, the co-ordinator stores that write itself and delivers it to the replica once it becomes available again (Hinted Handoff, see the oft linked paper on eventual consistency).
This makes read-repair far less of an issue, usually only as a mechanism to ensure consistency of requests that occur in the window between the node becoming available and the hint being delivered.
It's called eventual consistency for a reason. Writes don't just go missing. If you're uncomfortable with the "eventual" aspect of the replication model then you're better off with a database that sacrifices availability for improved consistency guarantees.