I am not such a fan of definitive definitions. For example, “something MUST be A, B and C to be XYZ” would not be one of my favorite concepts. While it is very reassuring to have this black and white structure on definition, the restrictions don’t allow for future growth.
NoSQL platforms aren’t yet in a place where strict definitions can or should be placed on them. These platforms are evolving in both purpose and technology. Some have been in development for 10+ years. Some have been in development for less than two.
While I don’t like definitions, I do like quotes. If you read my last posting, you know I like to invoke the wise words of others. To give a “definition” of NoSQL platforms, I thought it would be good to use the words of Jonathan Swift:
Currently NoSQL can mean many things to many people. The “No” in NoSQL can represent a literal “no”. Many of these data management platforms do not support what many in the data management space would consider the industry standard query language – SQL 99. NoSQL platforms’ largest issue supporting SQL queries is the lack of a standard structure upon which to write those queries. NoSQL platforms oftenhave multi-structured data sets under their “care and feeding.” Without a standard structure, it is difficult to support structured queries.
Another meaning of NoSQL is “Not Only” SQL. In this meaning, the data management platform supports SQL queries among other programmatic APIs to access and process multi-structured data. These platforms often have the ability to store both traditional structured data along the lines of relational tables and multi-structured data sets. The drawback to this approach is that often the results of a structured query against a multi-structured data set are sparsely populated. In this, the result set has the widest data structure, but many empty values since there is no guarantee that each “row” in a multi-structured data store has each of the “widest” data values.
Finally, and despite the popular press, the Apache Hadoop project isn’t the only NoSQL platform. It is only one kind of NoSQL platform. In fact, Hadoop is an ecosystem of various NoSQL subprojects. Types of NoSQL platforms include:
- Wide Column data stores such as the Hadoop HBase and Cassandra platforms
- Key-Value platforms like DynamoDB and Aerospike
- Document data stores similar to MongoDB and CouchDB
- Graph databases including of Neo4j and Infinite Graph
There are others that include object databases and XML data stores. However, just about any data store that doesn’t use traditional, relational data structures or SQL as its access methodology could be considered NoSQL platforms.
What say the readers?
Did I miss a NoSQL data store? Are my definitions “full of it”?
Post your comments below or contact me directly via Twitter at @JohnLMyers44 using the hashtag #noodlingNoSQL.