Having spend last four years on NoSQL implementations, I came across many queries from my fellow colleagues, techie friends -Whats so special about No SQL. Some of the experienced software professionals confessed that NoSQL is not new thought and they had done such data management implementation in pre-RDBMS era. Well, I believe that ideas, concepts are hardly introduced in software newly, it is implementation that improves over time and makes technology implementation commercially liable for adoption.
NoSQL technology provides better implementation in below domain of data representaion:
- Graph Databases
- Column Family Oriented Databases
- Key Value Stores
- Document Oriented Databases
Above four types of NoSQL databases provide below advantages:
- Better representation of relationships between entities represented in traditional E-R diagrams with Graph databases.
- Ability to overcome sparse column problem, associated in RDBMS.
- Flexible schema. Schema is needed while doing read operations with NoSQL.
- Higher performance with reduced features in data management.
- Diversity in solution
- Linear Scalability
So does NoSQL mean cannibalizing of RDBMS?
Absolutely not. NoSQL and RDBMS are implementations for different schools of thought in data management space. RDBMS will continue to be used in solutions where we need transactions. NoSQL generally offer eventual consistency, though we can say Graph Databases offer ACID properties.
Data Modeling in NoSQL
Data modeling in traditional RDBMS is based on maintaining primary key and foreign key relationship. This comes at cost of performance overhead though. NoSQL databases like column family or document oriented primarily data aggregate databases.
In column oriented databases, row key and column name together make aggregate category or dimension . In document oriented database, document id uniquely identifies document which can encapsulate document attributes and nested documents. Key Value Store is like distributed map implementation.
With this discussion, we can agree that NoSQL permits data duplication and there is no single source of truth, whereas RDBMS avoids data repetition with normalization.
How NoSQL is different from Big Data?
NoSQL is like speed boat serving real time queries. Big Data implementations like Hadoop are designed for batch processing and for huge chunk of data. They can be though as huge cargo ships.
NoSQL offers us many efficient solutions in places where RDBMS thought cannot exist or is expensive. NoSQL is no magic solution for data management.
Lastly NoSQL is "Not Only SQL", since it does not aim to replace SQL or RDBMS.