4 ms·
Yes, I just found out about these recently and am surprised no datastores have been built around them. They are basically a usable version of fork-join causal
by Jweb_Guru 10y ago
Yes, I just found out about these recently and am surprised no datastores have been built around them. They are basically a usable version of fork-join causal consistency. They also subsume CRDTs.
- naasking 10y agoDo they? The papers on CRDTs I've skimmed often mention concurrent revisions, but they've never claimed CR subsume CRDTs.
- Jweb_Guru 10y agoThis paper does (in fact, it points out that any total function can be emulated by a query-update automaton, which can be used with concurrent revisions). At least, that's my recollection, it could be a generalization of CR.
- naasking 10y agoWhat is the "this paper" you're referring to? The papers at the link I provided don't mention CRDTs much.
- Jweb_Guru 10y agohttp://research.microsoft.com/pubs/155638/msr-tr-2011-117%282%29.pdf http://research.microsoft.com/pubs/155638/msr-tr-2011-117%28...: "Our definition is strictly more general than CRDTs [17] in the following sense: From any state-based CRDT we can obtain a FJ-QUA by using the same state and initial state, the same query and update functions, a fork function that creates a new replica and then merges the forker state, and a join function that uses the merge. Note that the definition of strong eventual consistency in [17], just like ours, requires that updates can be applied to any state."
- jacques_chester 10y ago> Note that the definition of strong eventual consistency in [17], just like ours, requires that updates can be applied to any state. My favourite gotcha. It solves distributed statefulness! ... so long as someone else solves statefulness!
- naasking 10y agoI don't think that's a fair summary. Stateful cells have non-local and non-commutative evolution, which is why they're hard to distribute. These frameworks eliminate the non-locality, which isn't negotiable if you want to scale, but at the expense of preserving the requirement that you manually ensure commutativity. Not a bad tradeoff, and I highly recommend the CR papers if you haven't read them. I'd say most programs have a natural expression in terms of revisions, and you're left with only a small set of circumstances where state simply must evolve consistently and atomically (airplane seat reservations, for instance). I would still like a framework for reasoning about these circumstances that integrates naturally with CR though.
- jacques_chester 10y agoI hear you, I do. But it irks me when people wave this stuff around like a magic wand, because it's just not. It's like saying you have an O(1) solution to all TSP graphs with the teeny, tiny caveat that you start with a solution to the TSP graph you're working on.
- naasking 10y agoI still think your last statement is unfair. At worst, the caveat is that the TSP solution is for any graph within a certain class of topologies. Concurrent revisions in particular has been implemented to work in concurrent, parallel and incremental computing, with no change in semantics. So it's pretty darn close to a magic wand, but it can't violate the laws of logic.
- Jweb_Guru 10y ago