Tuesday, October 31, 2017

RavenDB 4.0 Unsung Heroes: Automatic Conflict Resolution

DZone Database Zone
RavenDB 4.0 Unsung Heroes: Automatic Conflict Resolution
RavenDB 4.0 Unsung Heroes: Automatic Conflict Resolution

RavenDB is a distributed database, and it has been a distributed database since pretty much the very start — although over time, we have been making the distribution part easier and easier. You might be able to tell that the design of RavenDB was heavily influenced by the Dynamo paper and RavenDB implements a multi-master system that allows every node to accept writes and disseminate them across the network.

This is great because it ensures that we have a high stability in the face of error, but this also opens us up to some interesting failure modes. In particular, if a document is modified in two nodes at the same time, there is no way to immediately detect that — unlike in a single master system, where such a thing would be detected but requires at least a majority of the nodes to be up. A scenario where we have concurrent modifications on the same document on a different server is called a conflict and is something that RavenDB is quite able to detect and handle.

No comments:

Fun With SQL: Functions in Postgres

DZone Database Zone Fun With SQL: Functions in Postgres In our previous  Fun with SQL  post on the  Citus Data  blog, we covered w...