Abstract
Databases play a fundamental role in today’s world, being used by most companies, especially those that offer services through the Internet. Today there is a wide variety of database models, each adapted for use according to the specific requirements of each application. Traditionally, the relational models with centralized architectures have been used mostly due to their simplicity and general-purpose query language, which made relational systems suitable for almost any application. However, with the growth of the Internet in recent decades, both in the number of users and in the amount of information, those centralized models began to suffer availability and scalability issues. To address those issues, the use of decentralized architectures and alternative database models began to arise, eventually replacing relational databases and centralized architectures when the requirements on availability and scalability are high. Those database models alternative to the traditional relational model are grouped under the name of NoSQL. In this article, we present a NoSQL database developed as an end of degree work, with a flexible data model based on documents and a fully decentralized architecture based on the Gossip protocol for node discovery and a distributed hash table, in particular the rendezvous hashing algorithm, used to distribute and replicate the data across all the nodes. The main goals of the system are to achieve high availability and high scalability. High availability is achieved thanks to the replication of the data, while high scalability is achieved by its decentralized architecture, which allows multiple entry points from the requests, and the data distribution, effectively increasing the database capacity by increasing the number of nodes.