If you think databases are all of the relational SQL kind (MySQL, MS SQL and PostgreSQL), then you have got a lot of reading up to do. There has been a lot of “noise” about NoSQL databases in recent times.
What are NoSQL Databases? That was the question I asked, the first time I heard the term “NoSQL”.
The term “NoSQL” typically refers to non-relational, distributed databases that do not require fixed-table schemas. After a little bit of “googling”, I realized that the concept of “NoSQL” is not exactly new and has been around for quite a while. Two of the best known implementations of NoSQL databases are Amazon’s Dynamo and Google’s BigTable. NoSQL, basically, is like a rebellion against traditional Relational Database Management Systems (RDBMS). Dave Kellogg, in one of his blog articles, describes NoSQL as:
…an organic and rapidly-growing industry movement away from relational databases, driven by a number of factors including both technology and cost.
For quite a while, Relational Database Management Systems (RDBMS) such as IBM DB2, MySQL, Microsoft SQL Server, PostgreSQL, and Oracle, have been the dominant model for database management. But today, non-relational, “cloud”, or “NoSQL” databases are beginning to gain recognition as an alternative model for database management. In fact, some organizations that collect large amounts of unstructured data are increasingly turning to nonrelational databases.
On a basic level, there are three popular types of NoSQL databases:
Key-value stores: data is stored as key-value pairs such that values are indexed for retrieval by keys. These systems can hold structured and unstructured data. An example is Amazon’s SimpleDB.
Column-oriented Databases: contain one extendable column of closely related data rather than sets of information in a strictly structured table of columns and rows as is found in relational databases. The ColumnFamily databases stem from Google’s internally-used BigTable. Some other examples are Cassandra, HBase, and Hypertable.
Document-based Stores: data is stored and organized as a collection of documents. Users are allowed to add any number of fields of any length to a document. They tend to store JSON-based documents in their databases. Examples of document databases include MongoDB, Riak, Apache CouchDB, and SimpleDB.