Salta el contingut

1. Bases de dades NoSQL

Versió Data Notes
Versió 1.0 Gener 2023 Versió inicial
Versió 1.0 Desembre 2024 Traducció i canvis menors

© Joan Gerard Camarena Estruch

Aquests materials es basen en els apunts d'anys anteriors creats per Joan Gerard Camarena i Jose Alfredo Murcia

El moviment NoSQL (Not Only SQL) contempla totes aquelles alternatives als sistemes de gestió de bases de dades relacionals tradicionals. Les bases de dades orientades a objectes podrien ser un primer enfocament a aquestes bases de dades NoSQL. No obstant això, hi ha altres models, amb un enfocament totalment diferent. Aquestes són bases de dades basades en documents, en parells clau-valor o en gràfics.

Encara que algunes de les característiques plantejades per aquests paradigmes s'estan incorporant als estàndards SQL i als SGBD relacionals, la realitat actual és que aquest tipus de bases de dades està creixent considerablement en moltes àrees. A principis dels anys 2000, va sorgir el web 2.0, que va suposar la conversió dels usuaris en generadors de contingut. Posteriorment, amb el web 3.0 o web semàntica, Internet es converteix en una gran base de dades, i l'accés a aquesta ja no és exclusiu de les aplicacions web, sinó de tot tipus d'aplicacions i apps. Actualment, estem davant l'auge de la intel·ligència artificial i el web 4.0, com una evolució de tot l'anterior. Amb tot això, podem imaginar la gran quantitat de dades que els servidors han d'emmagatzemar, i que requereix un emmagatzematge més deslocalitzat, distribuït i suficientment eficient per suportar milions de consultes diàries.

En aquesta unitat ens centrarem en les bases de dades de tipus document, específicament MongoDB, una base de dades basada en documents JSON, molt popular a la web.

1.1. Tipus de bases de dades

Podem trobar

  1. Bases de dades clau-valor → És un model de base de dades bastant senzill i popular, on cada element s'identifica amb una clau única, seguint el model de taula de hash, de manera que les dades es recuperen molt ràpidament. Els objectes generalment s'emmagatzemen com a objectes binaris (BLOBs). Algunes bases de dades d'aquest tipus són Cassandra (Apache), Bigtable (Google) o Dynamo (Amazon).

  2. Bases de dades documentals → Aquest model emmagatzema la informació en forma de documents, generalment XML o JSON, i s'utilitza una clau única per a cada registre, de manera que es permeten cerques clau-valor. La diferència respecte a les bases de dades clau-valor anteriors és que aquí el valor és el document en si mateix, no dades binàries. Com veurem més endavant, són molt versàtils, de manera que ni tan sols necessitem tenir una estructura comuna per als documents que guardem. El màxim exponent d'aquest tipus de base de dades és MongoDB.

  3. Bases de dades en gràfics → Un gràfic és un conjunt de vèrtexs o nodes units per arestes, que ens permeten representar relacions entre ells. Les bases de dades en gràfics intenten seguir aquest model, de manera que la informació es representa com a nodes en un gràfic, i les relacions entre ells es representen per arestes. D'aquesta manera, aprofitant la teoria de gràfics, podem recórrer la informació de manera òptima. Alguns exemples d'aquest tipus de base de dades són Amazon Neptune, JanusGraph (Apache), SQL Server (Microsoft) o Neo4j.