Data Models and Data Organization Methods

This is the next post in my series on NoSQL alternatives to RDBMSs.  How a datastore persists its data can be roughly divided into the following categories.  There may be others, depending on your perspective.  It can also be argued that some of the types below are subtypes of others.  
 
Data ModelDescriptionHas Schema/No SchemaRelationships are Modeled As...Data Is...ExamplesPossible Disadvantages
RelationalWe probably all know this by now.  Has SchemaPredefinedTypedSQL Server, MySQL, OracleEverybody has different opinions on this.  
Hierarchical
Probably the oldest electronic data storage mechanism.  Data is modeled in a pyramid fashion (parent and child records).
Probably the oldest electronic data storage mechanism.  Data is modeled in a pyramid fashion (parent and child records).With the advent of the relational model most hierarchical data stores died out.  However, XML started a bit of a renaissance in hierarchical data stores.  Many NoSQL solutions could be categorized as hierarchical.  
 
Has SchemaPredefinedTypedIBM IMS, the Windows registry,XML
  • relationships among children is not permitted. 
  • Extreme schema rigidity.  Adding a new data property usually requires rebuilding the entire data set
Networkvery similar to hierarchical datastores.  It was the next evolution of the hierarchical model, allowing multiple parents to have multiple children.  Much like a graph. Many healthcare data stores are based on MUMPS which falls into this category.  "data" is stored as data and methods (instructions on what to do with the data)Has SchemaPredefinedTypedCODASYL, Intersystems Cache and other Object-oriented databasesNever gained much traction because IBM wouldn't embrace it and the relational model came along and displaced both.  
Graphcould be considered the next generation of network data stores.  These are prevalent in the social-networking space where applications like Twitter, LinkedIn, and Facebook want to visualize your "network" for you.  Nodes represent users who have relationships (the edges) to each other.  Modeling this relationally is challenging at best.  A graph system can query these structures easily.  Basically, if you can model your data on a whiteboard, then a graph database can model it too.  It depends (but generally no schema)EdgesAd hocNeo4jdata is usually untyped.  Very complex.  
Documentdesigned for storing document-oriented data, such as XML, or semi-structured data.  No SchemaNone (generally)TypedCouchDb, MongoDbDoes not support ad hoc reporting tools, ie Crystal Reports
Columnarstores its data as columns or groups of columns of data, rather than as rows of data.  Good for OLAP applications and anywhere where aggregation query is important.  Has SchemaPredefined (similar to relational)TypedHBasegenerally not good for OLTP applications.
Key-Valuestores its data like an EAV model.  Entirely schema-less.  Data can be stored as byte-streams so you can persist the programming language's objects directly in the key-value storeNo SchemaLinks via keysSemi-typedRedis, Riak