A bunch of DCs with asynchronous replication and coordination-avoidance; high availability and partition tolerance; zero latency on client with optimistic UI; offline work in browser or mobile. Sounds cool, doesn't it? There are not so many applications on the market that have all these features. The reason for this is concurrent modifications that lead to conflicts. And you find yourself implementing timestamp-based conflict resolver. But does it really work? Most likely not. Academia has proposed a solution for this problem several years ago — CRDT (Conflict-free replicated datatypes). In this talk Andrey shows why naive conflict resolvers do not work using demo application. Afterwards CRDTs will be presented as the problem solution. Attendees will learn different CRDT types, advantages and disadvantages of each type will be discussed. Also this talk will shed a light on problems that are not solvable with CRDTs. Finally Andrey will show several databases with CRDT-support, so that you know which database to choose for your next project. Or probably listeners will be tempted to implement their own database...
Download presentation