re: Scalable architecture without magic (and how to build it if you’re not Google) VIEW POST

TOP OF THREAD FULL DISCUSSION
re: Thanks for the really interesting article @uyouthe ! When the database is distributed, can there be situations where a user on one server will get...
 

First of all, thanks!

No, data inconsistencies are not possible in distributed databases. As soon as we go distributed, a CRDT algorithms steps in to ensure data consistency. You basically can’t go distributed without CRDT, and Riak got you covered. This is why you can access the data through any node – conflict resolving and syncing made under the hood.

en.m.wikipedia.org/wiki/Conflict-f...

You either go full distributed or not distributed at all. With just a master-slave replication, slaves just copy the whole dataset and thus any inconsistencies aren’t possible.

 

Thank you for your reply! Your answer prompted me to do some reading. If I understand correctly, it seems that this kind of approach relies on the idea of "eventual consistency." However, if that is the case, it does seem that different nodes can potentially return different versions of the same information. That is, a node can potentially answer a query with data that is not up-to-date (over some finite interval of time) even when there are other nodes that do have the up-to-date information. This is something I am interested in, but do not have experience with, so do let me know if I've misunderstood, or if Riak works differently from "basic" eventual consistency...

Yes, you’re right. At distributed system, you can go for ACID, but it will be slower. However, Riak seems to use eventual consistency and vector clock:
docs.basho.com/riak/kv/2.0.1/learn...

In CRDTs, the Cap theorem is always taking place.

code of conduct - report abuse