Although I’m intrigued by the concept of NoSQL, an alternative to SQL that isn’t quite mainstream yet, I’ve come to believe there are parts of the concept that are indeed novel, while there are parts of the concept that make the technology unusable. Unfortunately, we may never arrive at the perfect level of getting it right, but here’s hoping.
NoSQL starts off with what is often quoted as a schema-less design, although some are hybrid implementations that have definitions for each column family (not unlike a table). While I applaud the schema-less design (it would certainly help speed development), this is where NoSQL starts to get in trouble. Querying now involves looking into each object on either the search or index. Not necessary a difficult task and NoSQL implementations handle this quite well, but it starts to feel more like traditional SQL makes more logical sense when it comes to handling queries.
Well, to me it seems like they just missed the dream. Along with trying to do away with the schema, they also tried to do away with the in-code manipulation of the data before being persisted. Although this makes persistence easier in some ways (think REST), it makes data manipulation much more difficult in other ways. They replaced the standard practice of pushing data into rows with a more complex mode of querying via map reduce functions.
The dream isn’t completely missed, though, as they are one step closer to making some novel concepts a reality. One of those is the compilation of related data into contiguous records rather than spread across tables and rows. This concept helps force the understanding that data in a system requires forethought as to the boundaries of autonomous records rather than grouping information into a single giant tree. For instance, the contact information of a user should not be saved separately from the user’s name, even if there is a 1-x relationship between the user and their contact information. Rather, the information should be read from the persistent storage as a single block. On deciding this compilation and separation, the interface for retrieval will become self apparent.
Additionally, since all related data is stored under a single key, basic operations such as copy and delete can be performed without missing extended elements.


