Nowadays, the NoSQL word has spread all around the computing sector, and like any other area of science, an inevitable specialization is going deep every day. There are several specialized categories for NoSQL databases, where the most commons ones are: column database, document database, key-value database and graph database.
An important concept of NoSQL technologies consists of the CAP acronym; created by Eric Brewer in 1998 and published one year later under the name of CAP Principle which was formal proven a theorem in 2002 by MIT professors Seth Gilbert and Nancy Lynch. Each one of three letters from CAP acronym describe a guarantee, which theorem proves to be impossible of simultaneous accomplishment in a distributed system. The guarantees are as follow:
- Consistency, meaning all nodes shall see the same data,
- Availability, meaning a request shall always produce a response,
- Partition Tolerance, meaning a node failure shall not affect regular operation.
A common visual form used to exhibit the CAP Theorem, has been so far, by using a triangle that highlight all three guarantees leading to the point that only two of them can be picked on the same time. However, since there is no reason for using a triangle to implicitly point that only two guarantees should be chosen, also a second images will illustrate the theorem. First image contains each guarantee as a set that can be combined in order to provide a specific feature, while the second one exhibits some available products for each two-combined guarantee.
Once all those technologies are available, most of them for free, a possible question that would pop up on the mind of a developer is: “Which one shall I use?” Probably the most common and accurate answer is “it depends”; and in despite of sounding ridiculous it is for sure the only right one.
Another such common statement on this subject consists of saying that a NoSQL database does not replace the relational ones, what I fully agree as well. Unfortunately, it is not that common find out speakers whom make clear to his NoSQL audiences that fewest projects can be designed leaving away the well-known and established relational database.
Maybe the most important message about the NoSQL would be “learn from it”. Certainly, it will help you as a software engineering offers better solutions for common solved problems. Nonetheless, prevent to follow the fashion path; relational databases still play a central rule and hardly ever a solution will be able to get rid of them.
This series of six articles covers seven commonly used NoSQL databases that belongs to four distinct categories; those articles do not intend to be the a technical material or tutorial for one trying to learn about them. Instead, it will give an introduction that can help understand the main differences and appropriate usage for each one of those, so different, databases.