—Dwight Merriman, CEO of MongoDB, at OSCON 2011, as quoted in an
article from ZDNet at www.zdnet.com/article/mongodb-chief-it-will-be-
mixed-sql-nosql-world/
There are different definitions and even some controversy over what NoSQL
means. Does it mean that the database does not use SQL for interactions?
Perhaps, but that is not absolute. Does it mean, as some now suggest, “not
only SQL?” Maybe. That is certainly a broader and more accurate description,
although it is also a bit misleading as it seems to include all the relational
databases that use SQL. Here is a well-known secret: There is no consistent
definition of the term. With that said, here is a reasonably accurate set of
features that the databases that are generally labeled NoSQL share:
They store structured data (organized in a way that is defined and
identifiable).
They do not store data relationally (no tables with rows and columns and
relationships between tables).
That’s about it.
The advantages to using a NoSQL option instead of a relational database are
as follows:
NoSQL databases are designed for really large sets of data and can often
handle more than any relational database.
NoSQL databases are designed to scale as needed. That is, instead of
buying a bigger database server to handle increased load as you would
with a relational model, you can add additional database hosts easily and
spread the database out across them. This is designed to work with
commodity hardware and transparently.
Commodity hardware is much cheaper than dedicated, professional
relational database server hardware, making NoSQL a less expensive
option in many cases.
Data models with NoSQL are much more relaxed. Some would call this a
disadvantage, but it is included in the advantages list because there are
some types of data models that may change frequently. In a relational
system, data model changes require taking the database offline to modify
the structure. Often, NoSQL databases have very little or even no data
model restrictions and can allow quick-and-dirty changes.
The disadvantages to using a NoSQL database are these:
Support is not as readily available. Most of the NoSQL databases are
relatively small open source projects, which is something that should