A few weeks back I wrote about the cloud-related trend of "NoSQL," a set of operational-data technologies based on non-relational database principles. But beyond the developer crowd and smaller Web-based businesses, how much has this trend taken root in "real world" production environments?
I recently spoke with Durran Jordan and Les Hill of Hashrocket, a Florida-based Web design and development group, about their use of MongoDB (which is billed as a scalable, high-performance, open source, schema-free, document-oriented database) in an application for one of their pharma customers.
Hashrocket's customer had an existing SQL-based application that they were required to rebuild because the current database could not handle the load given the complexity of the schema and the amount of data that it was storing.
The queries against the existing relational database were excessively complex due to a large number of tables, and caused the database to slow down to a crawl, effectively "breaking" the application.
After experimenting with a variety of optimization methods, the team looked to NoSQL options to attack the problem in a different way. By moving the main data into a hierarchy in MongoDB, they were able to read the same data in a single query versus a combination of joins, sub-selects, and separate queries of the existing database. This in turn solved their immediate database issue and also helped to future-proof the application.
The resulting application has literally changed the way the pharma company conducts business. Whereas in the past, patient queries could take minutes to hours, results are now essentially real-time.
I asked Jordan and Hill what aspects of databases developers should look at when contemplating a switch to NoSQL. Here are three suggestions that can help identify NoSQL use cases.
- Data models that can be visualized as a tree where the majority of the data exists in the context of a single root node may be a good case for a non-relational data store.
- If you have an extremely large data set and are looking for performance gains through de-normalization, a nonrelational database may be a fit.
- Applications that don't need multi-object transactions at the database level are also good candidates for a nonrelational store
These types of "real world" NoSQL use cases are the aim of the upcoming NoSQL Live conference, which will be held in Boston next month. The event aims to go "beyond understanding the basics of these [NoSQL] databases to how they are used in production systems." In addition to MongoDB, other NoSQL technologies such as Apache CouchDB, Cassandra, Tokyo Cabinet, Memcached, and a host of others will be represented.
Check it out and let me know. Is there something to this NoSQL thing or is this nothing more than a hobbyist's delight?