No SQL
No SQL
NoSQL word is coined by Google engineers, contrary to general belief of Not Using SQL its stands for Not Only SQL. Although this technology is available since long (e.g. B-Tree) but rapid advancement in recent year made NoSQL as a standard word in technology stack.
A little history:
Why Another Database?? Most of the RDBMS are having problems huge, which in some cases can scale by (RAM, DISK, Clustering etc) but almost showing sluggishness as data grows. In solutions are available resulting cost when size of data is very adding computing powers all of them starts some cases when scalable is very high. In general
traditional RDBMS were initially designed work under memory, hard disk and network latency restriction but over the time technology landscape changed and now with high power computing resources, fast network and cheaper memory cost provided new packaging of old concepts.
Now the question is whether NoSQL database is capable enough to replace traditional RDBMS? Short answer is no at least in near future. However NoSQL out performs traditional RDBMS in few area where very large volume is required and system does not require ACID behavior but eventual consistency is more important.
When high performance read/write is needed Easier and cheaper scalability Flexibility to store data Eventual consistency is more important than ACID transaction.
Unlike RDBMS, NoSQL databases comes in various types and these types are more focused towards a particular feature like Graphs databases are common in social networking. 1. 2. 3. 4. Document oriented (ex. MongoDB, CouchDB etc) Key-Value pair (ex. Redis, riak, etc) Tabular (Cassandra, Google Big Table etc) Graph (neo4j, sones etc)
Use cases:
The list below shows where NoSQL databases in general can be used, however the list is not exhaustive. 1. Archiving and Event Logging
a. Archiving of relational database is an option as there is no need for schema maintenance. b. Event Logging in most cases are not transactional in nature at the same time support for query mechanism is available. 2. Operational Data Store a. As ODS are normally not transactional in nature, a NoSQL DB can play a vital role. 3. Electronic Record Keeping 4. Document & Content management 5. Real Time Analytics 6. Caching (in case you dont want to include specialized caching frameworks)
Avoid:
We should avoid usage of NoSQL databases where ACID transaction is required, need of robust database management tools, need of integration with existing reporting framework. We should avoid in case we are not expecting data to grow to Petabyte level.
Target Products:
There is large number of NoSQL products provided by various vendors but the front runners are MongoDB, CouchDB, Cassandra, HBase, Redis, Riak etc. An interesting article is available for comparisons of various products, although due to rapid development of these products over the time classification may vary. http://blog.nahurst.com/visual-guide-to-nosql-systems
References:
www.mongodb.org http://cassandra.apache.org/
http://couchdb.apache.org/
http://hbase.apache.org/
http://wiki.basho.com/ http://redis.io/ http://rickosborne.org/ http://www.10gen.com/