Question

Everybody say that mongoDB is CP in CAP Theorem! But with using master-slave replication, It has high availability too (If a primary fails, the remaining members will automatically try to elect a new primary). My question is, In which situations (and how) It can have AP (with Eventual Consistency)?

Was it helpful?

Solution

Actually, there is a two-part answer:

  1. Sharding level: There's only one authoritative shard per data segment (C), shards work independently (P), if a shard is not available its data isn't available as well (A)

  2. Replica set level: There's only one authoritative master node (C), if required a new master will be selected (P), if there's no primary (during the voting phase which should only last a few seconds, but that's enough) you cannot access the data on that node. If you enable reading from secondaries (eventual consistency), you can read data from secondaries during the voting phase, but still not write new data. Thus it's a CP system.

In general, you don't lose the third characteristic entirely, but trade it for additional latency / overhead or for not having it for a short amount of time.

OTHER TIPS

it is not quite possible to have C,A,P all together, that is the theorem, you cant have them all, you can take only two.

See :

Where does mongodb stand in the CAP theorem?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top