4 ms·
> FWIW, the original Dynamo concept supported safety by returning not just the latest version, but all conflicting versions: the client then had the opportunity
by bonzoesc 15y ago
> FWIW, the original Dynamo concept supported safety by returning not just the latest version, but all conflicting versions: the client then had the opportunity to make a merged version of the data that was newer than either of the inputs, and store that as a replacement.
Riak can do this as well; tracking siblings and inheritance with vector clocks, allowing a writer to say that a particular version represents the merge of two previous versions.
- pbailis 15y agoYou're right--I definitely simplified the discussion of handling concurrent writes. Keeping around concurrent versions and using user-specified merge functions are two ways of deciding which versions to store. Riak indeed supports keeping concurrent versions or using an automatic last-writer-wins policy [1] The question of which versions will be returned depends on the safety properties of the consistency model. My main point isn't that Dynamo or Riak don't provide safety properties, it's that "eventual consistency" isn't a safety property on its own. [1] http://wiki.basho.com/Vector-Clocks.html http://wiki.basho.com/Vector-Clocks.html