| > If you talk to a majority of nodes and ask "this is what we all have, right?" You cannot know this, because the transaction replication is racy and not atomic--it may have applied to only one node while you are doing your read. Whether you see it or don't is luck. So you can have the following scenario (and in practice you will): - TX commit begins - TX replicated to node A - Read from coordinator A' begins - Read sees replica A (has tx) and replica B (does not) - Read assumes A wins because of some kind of vector clock in the data value (choosing the older value doesn't make things better, just in case you are wondering) - Read from coordinator B' begins - Read sees B (no TX) and C (no TX) - Read completes with stale value--serializability violation has occurred - TX finishes replicating to B and C This leaves aside write skew, torn transactions due to partitions, and all kinds of other problems. |
We must be talking about different things because I can't find any literature that has reached the conclusion that serializability is impossible in distributed transactions? Can you point me to that?
Also, do you have any thoughts on the literature[0] that contradicts what you're saying? I'm not an expert but unless I'm not misreading english serializability is possible with quorum reads and writes.
> In a new algorithm for maintaining replicated data, every copy of a replicated file is assigned some number of votes. Every transaction collects a read quorum of rvotes to read a file, and a write quorum of wvotes to write a file, such that r+w is greater than the total number of votes assigned to the file. This ensures that there is a non-null intersection between every read quorum and every write quorum. Version numbers make it possible to determine which copies are current. The reliability and performance characteristics of a replicated file can be controlled by appropriately choosing r, w, and the file's voting configuration. The algorithm guarantees serial consistency, admits temporary copies in a natural way by the introduction of copies with no votes, and has been implemented in the context of an application system called Violet.
Has this paper been refuted? In addition to this there's literally the whole section on distributed serializability[1].
[0]: https://dl.acm.org/citation.cfm?doid=800215.806583
[1]: https://en.wikipedia.org/wiki/Serializability#Distributed_se...