NoSQL databases are non-relational databases (DBs), intended for applications that need low latency and flexible models to manage large data volumes. They include a wide variety of database technologies designed to meet the development needs of modern applications — which are constantly generating huge amounts of new data.
The migration from relational to non-relational databases is highly encouraged by the constant growth in the number of Internet users and the exponential growth in the amount of interconnected devices, among other trends.
Even though these databases have existed since the 1960s, the term “NoSQL” was coined during the early 21st century with the exponential growth in data led by the Web 2.0. As the rise in the amount of data generated by users worldwide required new ways of managing data on databases.
NoSQL is short for “Not only SQL”. It is to say, most NoSQL databases do not use the SQL language for querying, or they use it as a secondary language.
Non-relational databases offer a distributed architecture that enables storing information in cases where relational DBs are not able to offer the necessary performance and scalability. They do not use fixed structures as opposed to relational databases. Instead of that, they use a variety of flexible data structures, such as key-value pairs or graphs, for data storage and retrieval.
Main features and benefits
While relational databases are optimized for storage, reducing redundancy, NoSQL DBs are optimized for horizontal scalability and agile development. Here are some of the main features and benefits (compared to relational DBs) of NoSQL databases:
- Flexible data structures, instead of standard tabular relationships.
- Low latency.
- Horizontal scalability.
- Large number of concurrent users supported.
- Optimized for large data volumes — either structured, semi-structured or unstructured.
- Distributed architecture that allows handling bigger amounts of data.
- Adapted to agile development sprints.
- Higher performance, speed and scalability.
Types of NoSQL databases
These are the main types of NoSQL DBs.
Key-value DBs or key-value stores stand out for being very efficient both for reading and writing. Each element is identified by a unique key that enables retrieving data quickly. Data is often stored as a binary object.
Examples of key-value databases: Redis, CouchDB and BigTable.
Document DBs or document stores are the most versatile NoSQL databases and can be used in a wide range of projects. They allow making more advanced queries about a document’s content, in addition to key-value queries. They rely on simple structures such as JSON or XML.
Examples of document databases: Elastichsearch and MongoDB.
Graph DBs offer a more efficient browsing experience between relationships compared to relational databases. This model uses graph structures for semantic queries and data is represented as nodes, edges and properties.
Examples of graph databases: FlockDB, InfiniteGraph and OpenLink Virtuoso.
Wide-column DBs or wide-column stores offer a hybrid solution between key-value and tabular database management systems (DBMS). They use a tabular format that allows to vary how data is named and formatted in each row within the same table. This type of NoSQL DB speeds up queries by storing data in columns.
Examples of wide-column databases: HBase, BigTable and Cassandra.
Object DBs or object-oriented databases combine database capabilities with object-oriented programming language capabilities. Data is represented as objects.
Examples of object-oriented databases: Db40, GemStone/S and Realm.
NoSQL or non-relational databases
MongoDB is an open source, NoSQL, document-oriented DBMS. MongoDB Inc. offers an integrated suite of cloud database services, as well as commercial support. It is commonly used for high-volume data storage.
Developer: MongoDB Inc.
Latest MongoDB release: MongoDB 6.0.1.
MongoDB license: Server Side Public License (SSPL).
Redis, short for “Remote Dictionary Server”, is an open source, NoSQL, key-value database management system.
Original author: Salvatore Sanfilippo.
Latest Redis release: Redis 7.0.7.
Redis license: BSD 3-clause.
ObjectDB is a cross-platform, object DBMS. It requires using one of Java’s standard APIS: JPA (Jakarta Persistence) or JDO (Java Data Objects). It is intended for providing better performance and faster applications. Besides, it is presented as the most productive option for developing Java DB applications using the Java Persistence API.
Developer: ObjectDB Software.
Latest ObjectDB release: ObjectDB 2.8.8.
ObjectDB license: proprietary.
BigTable is a fully-managed, wide-column and key-value database management system. It is intended for large analytical and operational workloads. It is part of the Google Cloud portfolio and, as such, it is used by many Google applications such as Google Analytics, Google Maps or Gmail.
BigTable initial release: 2005.
BigTable license: proprietary.
DynamoDB or Amazon DynamoDB is a cross-platform, key-value and document DBMS. It is part of the Amazon Web Services portfolio.
DynamoDB initial release: 2012.
DynamoDB license: proprietary.
Cassandra or Apache Cassandra is a free, open-source, wide-column DBMS — modeled after BigTable. It is designed for handling large volumes of data and ensuring high availability without single points of failure. It was initially developed to power the Facebook inbox search feature.
Developer: Apache Software Foundation.
Original authors: Avinash Lakshman and Prashant Malik while working at Facebook.
Latest Cassandra release: Cassandra 4.1.0.
Cassandra license: Apache License 2.0.
HBase or Apache HBase is an open-source, wide-column database management system. As Cassandra, it is modeled after BigTable. It is intended for providing a fault-tolerant way of storing large amounts of sparse data. HBase is part of Apache’s Hadoop project.
Developer: Apache Software Foundation.
Original author: Powerset.
Latest HBase release: HBase 2.4.14.
HBase license: Apache License 2.0.
Elasticsearch is a distributed, RESTful search and analytics engine. It is based on the Lucene library. Elasticsearch is the successor to a previous search engine called Compass, also designed by Shay Banon.
Developer: Elastic NV.
Original author: Shay Banon.
Latest Elasticsearch release: Elasticsearch 8.5.0.
Elasticsearch license: dual-licensed Elastic license and Server Side Public License.
CouchDB or Apache CouchDB is an open-source, key-value DBMS. It is optimized for using it in mobile devices thanks to its replication and synchronization capabilities. It allows working offline while network connection is not available.
Developer: Apache Software Foundation.
Original authors: Damien Katz, Jan Lehnardt, Naomi Slater, Christopher Lenz, J. Chris Anderson, Paul Davis, Adam Kocoloski, Jason Davies, Benoît Chesneau, Filipe Manana and Robert Newson.
Latest CouchDB release: CouchDB 3.2.2.
CouchDB license: Apache License 2.0.
InfiniteGraph is a cross-platform, scalable and cloud enabled graph DBMS. It is intended for handling high throughput and optimized for large, highly connected and complex data sets.
Developer: Objectivity, Inc.
InfiniteGraph license: proprietary.
Zope Object Database
Zope Object Database (ZODB) is an object-oriented DB management system. It is designed for transparently and persistently storing Python objects. Although it is included in the Zope web application server, it can also be used independently.
Developer: Zope Foundation.
Latest Zope Object Database release: ZODB 5.6.0.
Zope Object Database license: Zope Public License.
NoSQL databases quick comparison
|NoSQL DB||Type||License||Written in|
|Redis||Key-value database||BSD 3-clause||C|
|BigTable||Wide-column and key-value database||Proprietary||C++, Go, Java, Python and Ruby|
|DynamoDB||Key-value and document database||Proprietary||Java|
|Cassandra||Wide-column database||Apache License 2.0||Java|
|HBase||Wide-column database||Apache License 2.0||Java|
|Elasticsearch||Document database||Dual-licensed Elastic license and Server Side Public License||Java|
|InfiniteGraph||Graph database||Proprietary||C++ and Java|
|Zope Object Database||Object database||Zope Public License||Python|