Re:Applied Monotonicity: A Brief History of CRDTs in Riak
by zzzcpan on Friday March 08, 2019 @08:45PM
(#19343951)
Luckily for CRDTs, consensus-based strong consistency doesn't work well for most applications in geo-replicated scenarios, so CRDTs are kind of inevitable there. And they are still new and cutting edge, still need time. Look at the history of Riak, we wouldn't even use the same designs today as they did just a few years ago.
Re:Applied Monotonicity: A Brief History of CRDTs in Riak
by lumost on Friday March 08, 2019 @09:35PM
(#19344109)
Ultimately though it's pretty straightforward to write an accurate merge function for most distributed applications with the pro that you can think about them in a locally strong consistent manner. While I could see a better ORM style auto-merge system existing I don't see the hassle of CRDTs being worthwhile when the vast majority of geo-replicated systems have extremely small numbers of record level write conflicts across Geo's.
I'd venture that the number of potential write conflicts introduced by FB users hopping geo's is small enough to simply report an error to the client and forcing a retry - or handled by a hand-shake before the customer crosses GEOs
Is there any practical database application where a CRDT is useful?
Re:Applied Monotonicity: A Brief History of CRDTs in Riak
by manigandham on Sunday March 10, 2019 @02:09PM
(#19353270)
The practical application would be the example I posted about Redis replication.
Any application complex enough to need geo-replication is also likely not just writing a single key per user. There will be shared keys and data structures like tables/lists/hashes that all need to be synced.
Re:Applied Monotonicity: A Brief History of CRDTs in Riak
by mping on Saturday March 09, 2019 @04:08PM
(#19348489)
Correct me if I am wrong, but don't FaunaDB and CockroachDb implement strong consistency? I don't think they use CRDTs but maybe I'm wrong. I'm just a curious guy, by any means an expert
Redis Enterprise is probably the biggest CRDT usage in databases, used to sync geo-replicated active-active clusters: https://redislabs.com/landing/active-active/
There's also Datanet/Kuhiro which was a novel fully distributed database using CRDTs to always merge state across disruptions to a global view, although now seemingly dysfunct: http://highscalability.com/blog/2016/10/17/datanet-a-new-crd...