In his presentation, Marin Dimitrov, provides an introduction to both NoSQL as a concept and various examples of NoSQL data stores. I find that it's good to revisit these introduction type presentations simply because it reinforces the basics about the technology. Plus often times there are one or two things that you overlook.
Couple of points that Marin discusses about NoSQL as a concept.
NoSQL use cases:
- Massive Data Volumes
- Extreme Query Volume
- Schema Evolution
Advantages/Disadvantages to NoSQL:
- Massive Scalability
- High Availability
- Lower Cost (than competitive solutions at that scale)
- (Usually) Predictable elasticity
- Schema flexibility, sparse and semi-structured data
- Limited query capabilities (so far)
- Eventual consistency is not intuitive to program for (clients become more complicated)
- No standardization (portability is an issue)
- Insufficient access control
Marin discusses a wide variety of topics in this presentation such as, consistency models, architecture, partitioning, operations, data model and workflow for various NoSQL data stores. What data stores does Marin discuss? Quite a few actually, each data store has about 3-5 slides about it including some nice comparison slides for data stores in the same "family".
Here is the list of data stores discussed: PNUTS, Dynamo, Voldemort, BigTable, HBase, Cassandra and CouchDB. Obvious omissions include MongoDB and graph data stores altogether. Although Marin notes in his presentation that graph databases "Not exactly NoSQL... can't satisfy the requirements for high availability and scalability/elasticity very well". Any of the graph data store folks care to dispute this point?
Definitely worth a read.