Introducció a les Bases de Dades NoSQL
Les bases de dades NoSQL (Not Only SQL) són una categoria de sistemes de gestió de bases de dades que difereixen dels sistemes de bases de dades relacionals tradicionals (SQL) en diversos aspectes. Aquestes bases de dades estan dissenyades per emmagatzemar, processar i gestionar grans volums de dades no estructurades o semi-estructurades.
Característiques Clau de les Bases de Dades NoSQL
- Escalabilitat Horitzontal: Capacitat per escalar afegint més màquines en lloc de millorar les capacitats d'una sola màquina.
- Model de Dades Flexible: Suport per a diferents tipus de dades, incloent-hi dades no estructurades i semi-estructurades.
- Alta Disponibilitat i Tolerància a Fallades: Dissenyades per ser altament disponibles i resistents a fallades.
- Rendiment Elevat: Optimitzades per a operacions de lectura i escriptura ràpides.
Tipus de Bases de Dades NoSQL
- Bases de Dades de Documents: Emmagatzemen dades en documents semblants a JSON o BSON.
- Exemple: MongoDB
- Bases de Dades de Clau-Valor: Emmagatzemen dades com a parelles clau-valor.
- Exemple: Redis
- Bases de Dades de Columnes Amples: Emmagatzemen dades en files i columnes, però amb una estructura més flexible que les bases de dades relacionals.
- Exemple: Apache Cassandra
- Bases de Dades de Grafs: Emmagatzemen dades en nodes i arestes, ideals per a dades relacionades.
- Exemple: Neo4j
Comparació entre Bases de Dades SQL i NoSQL
Característica | SQL | NoSQL |
---|---|---|
Model de Dades | Relacional (taules) | Diversos (documents, clau-valor, grafs, etc.) |
Escalabilitat | Vertical | Horitzontal |
Esquemes | Esquema rígid | Esquema flexible |
Transaccions | ACID | BASE (Bàsicament Disponible, Estat Sofert) |
Casos d'Ús | Aplicacions transaccionals | Big Data, aplicacions en temps real |
Exemples Pràctics
Exemple 1: MongoDB (Base de Dades de Documents)
Instal·lació i Configuració
# Instal·lació de MongoDB en un sistema basat en Debian/Ubuntu sudo apt-get update sudo apt-get install -y mongodb
Operacions Bàsiques
// Connexió a la base de dades use mydatabase // Inserció d'un document db.users.insertOne({ name: "Joan", age: 30, city: "Barcelona" }) // Consulta d'un document db.users.find({ name: "Joan" }) // Actualització d'un document db.users.updateOne({ name: "Joan" }, { $set: { age: 31 } }) // Eliminació d'un document db.users.deleteOne({ name: "Joan" })
Exemple 2: Redis (Base de Dades de Clau-Valor)
Instal·lació i Configuració
# Instal·lació de Redis en un sistema basat en Debian/Ubuntu sudo apt-get update sudo apt-get install -y redis-server
Operacions Bàsiques
# Connexió a Redis redis-cli # Inserció d'una clau-valor SET user:1000 "Joan" # Consulta d'una clau-valor GET user:1000 # Eliminació d'una clau-valor DEL user:1000
Exercicis Pràctics
Exercici 1: Treballant amb MongoDB
- Instal·la MongoDB en el teu sistema.
- Crea una base de dades anomenada
empresa
. - Crea una col·lecció anomenada
empleats
. - Insereix documents amb la següent estructura:
{ "nom": "Anna", "edat": 28, "departament": "Vendes" }
- Consulta tots els documents de la col·lecció
empleats
. - Actualitza l'edat d'un empleat.
- Elimina un document de la col·lecció.
Solució
// Connexió a la base de dades use empresa // Creació de la col·lecció i inserció de documents db.empleats.insertOne({ nom: "Anna", edat: 28, departament: "Vendes" }) // Consulta de tots els documents db.empleats.find() // Actualització de l'edat d'un empleat db.empleats.updateOne({ nom: "Anna" }, { $set: { edat: 29 } }) // Eliminació d'un document db.empleats.deleteOne({ nom: "Anna" })
Exercici 2: Treballant amb Redis
- Instal·la Redis en el teu sistema.
- Crea una clau-valor per emmagatzemar el nom d'un usuari.
- Consulta la clau-valor creada.
- Actualitza el valor de la clau.
- Elimina la clau-valor.
Solució
# Connexió a Redis redis-cli # Creació d'una clau-valor SET user:1001 "Anna" # Consulta de la clau-valor GET user:1001 # Actualització del valor de la clau SET user:1001 "Anna Maria" # Eliminació de la clau-valor DEL user:1001
Errors Comuns i Consells
- No definir un esquema clar en MongoDB: Tot i que MongoDB és flexible amb els esquemes, és recomanable definir un esquema clar per mantenir la coherència de les dades.
- No gestionar la persistència en Redis: Redis és una base de dades en memòria, per la qual cosa és important configurar la persistència per evitar la pèrdua de dades.
- No optimitzar les consultes: En bases de dades NoSQL, és crucial optimitzar les consultes per garantir un rendiment elevat.
Conclusió
Les bases de dades NoSQL ofereixen una solució flexible i escalable per gestionar grans volums de dades no estructurades o semi-estructurades. Comprendre els diferents tipus de bases de dades NoSQL i les seves aplicacions és essencial per aprofitar al màxim aquestes tecnologies en projectes de Big Data. En els següents mòduls, explorarem altres tecnologies i pràctiques relacionades amb Big Data per continuar ampliant els nostres coneixements en aquest camp.