How to decide which NoSQL technology to use?

Chiron picture Chiron · Sep 17, 2010 · Viewed 12.8k times · Source

What is the pros and cons of MongoDB (document-based), HBase (column-based) and Neo4j (objects graph)?

I'm particularly interested to know some of the typical use cases for each one.

What are good examples of problems that graphs can solve better than the alternative?

Maybe any Slideshare or Scribd worthy presentation?

Answer

b7kich picture b7kich · Jan 4, 2011

MongoDB

Scalability: Highly available and consistent but sucks at relations and many distributed writes. It's primary benefit is storing and indexing schemaless documents. Document size is capped at 4mb and indexing only makes sense for limited depth. See http://www.paperplanes.de/2010/2/25/notes_on_mongodb.html

Best suited for: Tree structures with limited depth

Use Cases: Diverse Type Hierarchies, Biological Systematics, Library Catalogs

Neo4j

Scalability: Highly available but not distributed. Powerful traversal framework for high-speed traversals in the node space. Limited to graphs around several billion nodes/relationships. See http://highscalability.com/neo4j-graph-database-kicks-buttox

Best suited for: Deep graphs with unlimited depth and cyclical, weighted connections

Use Cases: Social Networks, Topological analysis, Semantic Web Data, Inferencing

HBase

Scalability: Reliable, consistent storage in the petabytes and beyond. Supports very large numbers of objects with a limited set of sparse attributes. Works in tandem with Hadoop for large data processing jobs. http://www.ibm.com/developerworks/opensource/library/os-hbase/index.html

Best suited for: directed, acyclic graphs

Use Cases: Log analysis, Semantic Web Data, Machine Learning