It's so last century, amirite?
The reasons are legion...
UI
DB
Object Hierarchies
Table Relationships
Differing data representations
on client and server
Does this really scale?
Cassandra
Apache HBASE
Oracle Berkley DB
Redis
CouchDB
MongoDB
Firebase
Riak KV
Neo4J
Sqrrl
GraphDB
ScyllaDB
Oracle Berkley DB
Redis
Riak KV
CouchDB
MongoDB
Firebase
Cassandra
Apache HBASE
ScyllaDB
Neo4J
Sqrrl
GraphDB
Atomicity (of updates), Consistency (of state), Isolation (of users from in-progress updates), Durability (of transactions across system failures)
Basically Available (data is never 'locked'), Soft state (system can change over time even without input, because of...), Eventually consistent (once input stops)
Availability
Consistency
Partition Tolerance
Clients can always read & write
Clients always see same view of data
Clients never affected by partitioning faults / delays
Choose
any
2
SQL / RDBMS
Disk-based KVP DBs
Some Document DBs
In-memory KVP DBs
Some Column DBs
Some Column DBs
Some Document DBs
Some Column DBs
This Presentation:
http://slides.com/cliffordhall/nosql
Introduction to NoSQL (Martin Fowler)
https://youtu.be/qI_g07C_Q5I
What is a Column Store Database?
http://database.guide/what-is-a-column-store-database/
What is a Graph Database?
https://neo4j.com/developer/graph-database/
What is a Key-Value Store?
https://www.aerospike.com/what-is-a-key-value-store/
What is a Document Database?
https://aws.amazon.com/nosql/document/