I was going through few articles in recent past where I came across with some very good information. We have seen so many RDBMS to name a few is Oracle, MySQL, HANA etc. however there is a buzz on NoSQL DB. Have you heard about NoSQL DB ? Do you know why it is used and where actually it can be used ?
Let’s take a look on NoSQL.
What is NoSQL?
NoSQL is a whole new way of thinking about a database. NoSQL is not a relational database. The reality is that a relational database model may not be the best solution for all situations. The easiest way to think of NoSQL, is that of a database which does not adhering to the traditional relational database management system (RDMS) structure. Sometimes you will also see it revered to as ‘not only SQL’.
“It is not built on tables and does not employ SQL to manipulate data.”
Then how you can retreive data from NoSQL DB?
You can store the data by exposing it using REST based service but Not necessarily all services are REST based.But, all NOSqls provide some API for all major languages like java, .net etc.
You can download them from the their site and add them to your application and start calling their API just like Oracle / DB2 etc.
These DBs are cloud friendly, they can be easily deployed in a cloud environment.
Basically there are 4 type of NoSQL
- —Key / Value Based : Key/Value Data stores are highly performant, easy to work with and they usually scale well.
- —Column Based NoSQL : Column based data stores are extremely powerful and they can be reliably used to keep important data of very large sizes.
- —Document Based NoSQL : Document based data stores are excellent for keeping a lot of unrelated complex information that is highly variable in terms of structure from one another
- —Graph Based— : Used to store information about netwroks, such as social connections.
- Key/Value Based : Redis , MemcacheDB
- Column : Cassandra , HBase
- Document : MongoDB, Couchbase
- Graph : Orient DB, Neo4J
|Key/Value – Redis||Column – Cassandra||Document-MongoDB||Graph – Ne04J|
|Best used :||Quickly storing data for – sometimes frequent – future use. Redis supports lists, sets,queues and more.||When you need to store data so huge that it doesn’t fit on server, but still want a friendly familiar interface to it.||If you need dynamic queries. If you prefer to define indexes, not map/reduce functions. If you need good performance on a big DB. If you wanted CouchDB, but your data changes too much, filling up disks.||Very good for storing information about the relationships between things.|
|For Example :||To store unstructured data.||Web analytics, to count hits by hour, by browser, by IP, etc. Transaction logging. Data collection from huge sensor arrays.||For most things that you would do with MySQL or PostgreSQL, but having predefined columns really holds you back.||Mostly used by social networking sites like Linked in, Facebook to navigate user and suggest mutual friends.|