Skip to content

CAP theory for common NoSQL system

Introduction to CAP

  • Consistency means that each client always has the same view of the data.
  • Availability means that all clients can always read and write.
  • Partition tolerance means that the system works well across physical network partitions.

Consistent, Available (CA) Systems

have trouble with partitions and typically deal with it with replication.

  • Traditional RDBMSs like Postgres, MySQL, etc (relational)
  • Vertica (column-oriented)
  • Aster Data (relational)
  • Greenplum (relational)

Consistent, Partition-Tolerant (CP) Systems

have trouble with availability while keeping data consistent across partitioned nodes.

  • BigTable (column-oriented/tabular)
  • Hypertable (column-oriented/tabular)
  • HBase (column-oriented/tabular)
  • MongoDB (document-oriented)
  • Terrastore (document-oriented)
  • Redis (key-value)
  • Scalaris (key-value)
  • MemcacheDB (key-value)
  • Berkeley DB (key-value)

Available, Partition-Tolerant (AP) Systems

achieve “eventual consistency” through replication and verification.

  • Dynamo (key-value)
  • Voldemort (key-value)
  • Tokyo Cabinet (key-value)
  • KAI (key-value)
  • Cassandra (column-oriented/tabular)
  • CouchDB (document-oriented)
  • SimpleDB (document-oriented)
  • Riak (document-oriented)

nosql-cap.png

Reference

https://blog.nahurst.com/visual-guide-to-nosql-systems