How does RavenDB ensure partition consistency, availability, and validity?

According to the CAP theorem , it is not possible for a distributed computer system to provide consistency , availability and separation access at the same time .

Considering about RavenDB , it seems, that the database at the same time supports ACID transactions and sharding. How does RavenDB achieve this?

+3
source share
2 answers

To clarify everything in advance:
by default, all entries in a RavenDB session between calls .SaveChanges()are all-or-none. If for any reason one operation fails, all changes in the current session / after the last save will be discarded. This feature, combined with the optimistic inclusion of concurrency, is very powerful. If you need a longer transaction, there is support for System.Transaction, and this works as expected.

As for the shards:
There is no true support for distributed transactions in custom setup. However, due to the location of the background documents in a good scalding strategy, you may have a transactional record in each of your stores. They just work as if there were no shards at all.

+4
source

CouchDB : "ACID" ( node), ( CAP). .

P.S. "", , - A CAP. A CAP " , ". , PAXOS , .

. Consistency, , .

+1

All Articles