NoSQL Benchmarks NoSQL use cases NoSQL Videos NoSQL Hybrid Solutions NoSQL Presentations Big Data Hadoop MapReduce Pig Hive Flume Oozie Sqoop HDFS ZooKeeper Cascading Cascalog BigTable Cassandra HBase Hypertable Couchbase CouchDB MongoDB OrientDB RavenDB Jackrabbit Terrastore Amazon DynamoDB Redis Riak Project Voldemort Tokyo Cabinet Kyoto Cabinet memcached Amazon SimpleDB Datomic MemcacheDB M/DB GT.M Amazon Dynamo Dynomite Mnesia Yahoo! PNUTS/Sherpa Neo4j InfoGrid Sones GraphDB InfiniteGraph AllegroGraph MarkLogic Clustrix CouchDB Case Studies MongoDB Case Studies NoSQL at Adobe NoSQL at Facebook NoSQL at Twitter



What NoSQL Can Learn from LDAP History

A great post from Michael Mullary over Engine Yard blog on the pros and cons of LDAP and what can be learned from its insuccess.

I especially liked what Michael identified as some of the possible causes of LDAP’s ”failure”

  • Telecom protocols FTL
  • Access control that exceeded human brain capacity
  • Interesting data wanted to be relational

If you take a step back and look at the first two points you’ll realize they are referring to one very important aspect of every system: complexity. That sort of complexity in the sense Emil Eifrem and myself talked about and comsidered to be a new dimension of NoSQL scalability.

The last point is as important. Everything we know is connected in one way or another to other things around. Sometimes the relationships are predefined, but there are many cases when we are adding ad-hoc connections.

But what’s the connection with NoSQL? Except graph databases, most of the other NoSQL solutions tend to have a hard time modeling relationships (that should be obvious as NoSQL has stepped out of the Codd’s model). And while this might not usually be a problem at the storage level it can definitely represent an issue at querying level. Take for example key-value stores and ask yourself how will you deal with range queries. Or take a look at how document stores are modelling relationships and their implications.

Modelling interconnected data in a non relational way is a challenge and we will have to figure out if we can design applications in which we ignore some real-life dimensions or we need to come up with ways to handle pre-existant or ad-hoc relationships.