3 ms·
Correct database implementations must be strongly consistent, unless your updates all commute with each other, in which case eventual consistency works. E.g. d
by devit 9y ago
Correct database implementations must be strongly consistent, unless your updates all commute with each other, in which case eventual consistency works.
E.g. db[key] += value and db[key].insert(value) commute with themselves, but db[key] = value obviously doesn't.
This just seems to be an attempt to implement a correct eventually consistent database, and the CRDTs are simply datatypes with commutative update operations.
Unfortunately, it seems to allow transactions that examine objects and then (conditionally) update them, which obviously are not guaranteed to be commutative even if the objects are commutative, so maybe it doesn't succeed at implementing a correct database.
- marc_shapiro 9y agoSome conditional updates are safe; others require to add concurrency control. Our CISE analyser will tell precisely you which side a specific operation falls into. See https://youtu.be/HJjWqNDh-GA https://youtu.be/HJjWqNDh-GA and http://dx.doi.org/10.1145/2911151.2911160 http://dx.doi.org/10.1145/2911151.2911160. Antidote doesn't yet support concurrency control, it's work in progress.