« links for 2007-09-21 | Main | links for 2007-09-27 »

CAP

S3 Memory consistency model:

"What about if I PUT X and then DELETE X? Am I guaranteed that these operations will be performed in the correct order? (i.e., am I guaranteed that the object will eventually be deleted?) "

Asked in the context of S3. An earlier answer indicated that two PUTs could arrive out of order given the right sequence of partial failures. Since the network isn't smart (a good thing), it treats all HTTP methods equally, so the answer is you're not guaranteed to not get PUT/DELETES out of order; albeit it's unlikely to happen.

Ian Davis is right; it's tricky to explain or justify this to devs who have grown up on strong consistency, or even things like the JVM's "happens-before" semantics. The way I look at it is that compensating action or dealing with out of order events is kind of like dealing with domain business "logic", insofar as there is that real world messiness to contend with. But to work at bigger scales, if you want availability, consistency has to give, as partitioning will tend to happen.


September 21, 2007 05:04 PM