NoSQL Databases


NoSQL is a database technology designed to support the requirements of cloud applications and architected to overcome the scale, performance, data model, and data distribution limitations of relational databases (RDBMS’s).

NoSQL Explained

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.

DataStax Enterprise is the database for cloud applications.
Learn More About and Download DataStax Enterprise