Web services that operate in real time and process diverse datasets pose a challenge when it comes to storage (Kaufmann and Meier, 2019). In these cases, NoSQL databases can provide a solution: They are easily scalable, allow fast querying and are said to make work for developers easier (Schaefer, 2021). Unlike what one might expect, the “No” in NoSQL stands for “not only”.
The rigid structures of traditional relational databases can be limiting for certain kinds of data and sometimes not all features of relational databases are needed (Lai, 2009). For example, when handling Big Data, processing needs to be extremely fast – these kinds of volumes are often not easy to handle with traditional relational database systems (Lai, 2009).
Different kinds of NoSQL databases exist: They can be for example based on documents, graphs, key-value pairs or tuples. Each of these has advantages when applied in certain use cases. In the following, three important kinds (Kamaruzzaman, 2021) of NoSQL databases will be introduced.
MongoDB is a document-based database program. For many developers, it is the go-to database solution for modern web applications, for example in conjunction with frontend technologies Vue.js, Angular or React. MongoDB can be used under the Server Side Public License (SSPL) which was introduced by the MongoDB Inc. itself – although it is intended as an open source license, it is not recognized as such by the Open Source Initiative.
Cassandra is a so-called Wide Column Store, a database that uses columns and rows like a relational database but the names and format of the columns is not fixed and can vary. It was originally developed by Facebook as a new search feature but has since moved on to be developed as an open source project by the Apache Foundation (Strauch et al., 2011). One of Cassandra’s main features is the ability to distribute data over different nodes and data centers. It is therefore designed to manage large amounts of data.
In Redis, all data is stored in-memory which leads to read and write operations being executed at high speed (Da Silva and Tavares, 2015). The main idea behind this is that Redis combines functionalities as a data store and a cache. It stores key-value pairs and is mainly used for applications where data changes often and its size fits the available memory. Since Redis makes use of a range of data types, such as “Strings, Hashes, Lists, Sets, Sorted Sets, Bitmaps and HyperLogLogs” (Da Silva and Tavares, 2015, p. 1), the data to store should also fit the data types.