Last updated on: 2018-04-25
Authored by: Satyakam Mishra
This page presents information that is helpful for deciding whether to use a relational database, a NoSQL database, or a hybrid solution.
For an introduction to relational databases and NoSQL databases, see Types of databases.
The following table provides a high-level comparison of the characteristics of relational and NoSQL databases:
Relational databases | NoSQL databases |
---|---|
Moderate incoming data velocity | High incoming data velocity |
Data comes from one or a few locations | Data comes from many locations |
Primarily structured data | Structured and semi-unstructured data |
Nested or complex transactions | Simple transactions |
Protect uptime via failover or log shipping | Protect uptime via architecture |
High availability | Continuous availability |
Deploy an app to one server | Deploy an app to many servers |
Primarily write data to one location | Write data to any location |
Primary concern is scaling reads | Scale writes and reads |
Scale up for more users and data | Scale out for more users and data |
Maintain data volumes with purges | High data volumes that are retained forever |
The following image visualizes the structures of various types of databases, as well as the data complexity that they are designed to accommodate:
The following table compares the characteristics of relational databases and NoSQL graph databases:
Relational database | Graph database (NoSQL) |
---|---|
Simple-to-moderate data complexity | Heavy data complexity |
Hundreds of potential relationships | Billions of potential relationships |
Moderate JOIN operations and good performance | Heavy or extreme JOIN operations |
Static to semi-static data changes | Dynamic, constantly changing data |
Primarily structured data | Structured and unstructured data |
Nested or complex transactions | Simple transactions |
Always strongly consistent | Tunable consistency (eventual to strong) |
Moderate incoming data velocity | High incoming data velocity |
High availability | Continuous availability |
Centralized application | Distributed, location-independent application |
Scale up for increased performance | Scale out for increased performance |
If you are evaluating whether a NoSQL database is appropriate for your production environment, you should address the following technical, business, and deployment considerations.
Before deciding to use a NoSQL database, ask the following technical questions:
The following list presents business-related questions that you should ask before deciding to use a NoSQL database:
A NoSQL database can be used as part of a new application, to augment an existing application, or to fully replace an application. Before choosing a database, consider your deployment needs.
Many organizations begin using NoSQL on a new application. This approach enables you to avoid rewriting applications, migrating data, and performing related tasks.
Some organizations choose to augment an existing system by adding a NoSQL component. This often happens with applications that have outgrown a relational database due to scale problems, the need for better availability, or other issues. Parts of the existing system continue to use the existing RDBMS, while other components of the application are modified to use the NoSQL database.
If a system is too costly or is breaking due to an increase in user concurrency, data velocity, or data volume from cloud applications, it can be fully replaced with a NoSQL database.
The following questions can help you determine whether a relational database or a NoSQL database is best for your application.
For more information about relational databases and NoSQL databases, see the Managed Operations FAQ. If you have further questions, contact support.
Learn more about Rackspace database services.
©2020 Rackspace US, Inc.
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License