Whether you are a fan of NoSQL, cynical of its merits, or just curious about its development goodies, there's no escaping the presence and growth of NoSQL. In the next 18 months, at least half of all new websites will use NoSQL databases, reports GigaOM Pro Research.
Described by many in the know as a collection of tools and technologies, NoSQL has made its sharpest imprint in the database space, where it delivers solutions not delivered or not delivered well by SQL.
To avoid odious comparisons with SQL, it's important to state that the features and benefits or SQL and NoSQL don't line up neatly.
NoSQL is a set of loosely-related technologies, says Justin Sheehy, CTO, Basho Technologies, the creator of Riak, a distributed data store that combines high availability and powerful partitioning.
"SQL is a semi-standard language," he says. "There is not a relevant limitation inherent in the SQL language, and there is no technology that is SQL. The whole point of the NoSQL phenomenon is to add new options and tools."
The NoSQL phenomenon is worth keeping an eye on for the following reasons:
It's Open Source
Open source means; no fees or certainly low ones; better reliability than with closed source software; good security; and fast deployment.
Cassandra, CouchDB, Hbase, MongoDB, Redis and Riak are some of the most prominent NoSQL options.
There's a NoSQL Database for a Variety of Tasks
Frequently written, rarely read statistical data (for example, a web hit counter) should use an in-memory key/value store such as Redis, or an update-in-place document store such as MongoDB, says Adam Wiggins, co-founder, Heroku, a cloud-based platform-as-a-service (PaaS) provider.
"Big Data" such as weather stats or business analytics will work best in a freeform, distributed db system such as Hadoop.
Binary assets (such as MP3s and PDFs) work well in a datastore that can serve directly to the user's browser, such as Amazon S3.
Transient data (such as web sessions, locks, or short-term stats) should probably be kept in a transient datastore such as Memcache, advises Wiggins.
"If you need to replicate your data set to multiple locations (such as syncing a music database between a web app and a mobile device), you'll want the replication features of CounchDB," he adds.
High availability apps, where minimizing downtime is critical, thrive in the automatically clustered, redundant setup of datastores such as Cassandra and Riak.
NoSQL Has the Cachet of Big-Name Buy-In
Household entities such as Amazon, the BBC and Google have large production implementations. Two of the best-known are Amazon's Dynamo and Google's BigTable.
NoSQL is being adopted quickly among web application developers writing apps for the hottest new web platforms such as Twitter, Facebook, Apple iPad and iPhone.
NoSQL Databases Handle Upgrades Better than SQL Ones
"In a SQL database, updates involve updating the schema and the stored data," says Damien Katz, co-founder and CEO, Couchio, developer of CouchDB. "This often causes problems as new needs arise that weren't anticipated in the initial database designs. With CouchDB, no schema is enforced, so new document types with new meaning can be safely added alongside the old."
The BBC, one of CouchDB's customers, is using CouchDB to handle 150 million requests per day in two clusters of machines, notes Katz.
Similar to other customers, the BBC selected CouchDB because of its superior replication and easy upgrade capabilities, he says.
NoSQL and the Cloud: A Perfect Fit
SQL databases have become the proverbial hammer in search of a nail," says Wiggins.
"At the same time, many cloud web applications have expanded beyond the sweet spot for these relational database technologies," he notes. "Many applications demand availability, speed, and fault tolerance over consistency."
Wiggins says NoSQL databases help meet these new requirements by providing solutions tailored for web apps that rely upon data that is document-centric, transient, and/or graph-like in nature.
NoSQL databases typically emphasize horizontal scalability via partitioning, putting them in a good position to leverage the elastic provisioning capabilities of the cloud, says Wiggins.