A NoSQL (Not-only-SQL) database is one that has been designed to store, distribute and access data using methods that differ from relational databases (RDBMS’s). NoSQL technology was originally created and used by Internet leaders such as Facebook, Google, Amazon, and others who required database management systems that could write and read data anywhere in the world, while scaling and delivering performance across massive data sets and millions of users.
Today, almost every company and organization has to deliver cloud applications that personalize their customer’s experience with their business, with NoSQL being the database technology of choice for powering such systems.
How NoSQL Differs from Relational Databases
NoSQL and RDBMS’s are designed to support different application requirements and typically they co-exist in most enterprises. The key decision points on when to use which include the following:
|Use an RDBMS when you need/have...||Use NoSQL when you need/have...|
|Centralized applications (e.g. ERP)||Decentralized applications (e.g. Web, mobile and IOT)|
|Moderate to high availability||Continuous availability; no downtime|
|Moderate velocity data||High velocity data (devices, sensors, etc.)|
|Data coming in from one/few locations||Data coming in from many locations|
|Primarily structured data||Structured, with semi/unstructured|
|Complex/nested transactions||Simple transactions|
|Primary concern is scaling reads||Concern is to scale both writes and reads|
|Philosophy of scaling up for more users/data||Philosophy of scaling out for more users/data|
|To maintain moderate data volumes with purge||To maintain high data volumes; retain forever|
For a detailed feature comparison between a NoSQL database like Apache Cassandra™ and RDBMS’s like Oracle, SQL Server, and MySQL, click here.
How NoSQL Databases Differ From Each Other
There are a variety of different NoSQL databases on the market with the key differentiators between them being the following:
Architecture: Some NoSQL databases like MongoDB are architected in a master/slave model in somewhat the same way as many RDBMS’s. Others (like Cassandra) are designed in a ‘masterless’ fashion where all nodes in a database cluster are the same. The architecture of a NoSQL database greatly impacts how well the database supports requirements such as constant uptime, multi-geography data replication, predictable performance, and more.
Data Model: NoSQL databases are often classified by the data model they support. Some support a wide-row tabular store, while others sport a model that is either document-oriented, key-value, or graph.
Data Distribution Model: Because of their architecture differences, NoSQL databases differ on how they support the reading, writing, and distribution of data. Some NoSQL platforms like Cassandra support writes and reads on every node in a cluster and can replicate / synchronize data between many data centers and cloud providers.
Development Model: NoSQL databases differ on their development API’s with some supporting SQL-like languages (e.g. Cassandra’s CQL).
A benchmark by End Point, an independent database firm, stress-tested Apache Cassandra, HBase, MongoDB, and Couchbase on operations typical to real-world applications: Cassandra vs. MongoDB vs. HBase vs. Couchbase performance comparison.
Benefits of NoSQL
NoSQL databases are primarily designed for supporting decentralized systems that target cloud applications. A NoSQL database like Cassandra typically offers the following benefits over other database management systems:
Continuously Available: A database that stays online even in the face of the most devastating infrastructure outages.
Geographically Distributed: Fully active data, everywhere you need it.
Operationally Low Latency: Response times fast enough for your most intense operational cloud applications.
Linearly Scalable: Predictably scale to meet the current and future data needs of cloud applications.
Immediately Decisive: Full range of data manipulation capabilities tightly integrated into a single system.
Functionally Cohesive: Coherent integration and interoperability of mixed workloads and multiple data models.
Operationally Mature: Enterprise-ready data management for cloud applications.
Low TCO: No requirements for specialized hardware or ancillary software.
How to Implement NoSQL
From a practical perspective, how do you go about actually moving to NoSQL and implementing your first application? In general, there are three ways to go about implementing a NoSQL database:
New Applications: Many begin with NoSQL by choosing a new cloud application and starting from the ground up, with either a small or large system. Such an approach mitigates the issues of application rewrites, data migrations, etc.
Augmentation: Some choose to augment an existing system by adding a NoSQL component to it. This oftentimes happens with applications that have outgrown an RDBMS due to scale problems, the need for better availability, or other issues.
Full Rip-Replace: For systems that simply are proving too costly from an RDBMS perspective to keep, or are breaking in major ways due to increases of user concurrency, data velocity, or data volume, a full replacement is done with a NoSQL database.
If you are looking to implement NoSQL or want to learn about NoSQL and its benefits, below are some recommended resource by experts.