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

  1. Escalabilitat Horitzontal: Capacitat per escalar afegint més màquines en lloc de millorar les capacitats d'una sola màquina.
  2. Model de Dades Flexible: Suport per a diferents tipus de dades, incloent-hi dades no estructurades i semi-estructurades.
  3. Alta Disponibilitat i Tolerància a Fallades: Dissenyades per ser altament disponibles i resistents a fallades.
  4. Rendiment Elevat: Optimitzades per a operacions de lectura i escriptura ràpides.

Tipus de Bases de Dades NoSQL

  1. Bases de Dades de Documents: Emmagatzemen dades en documents semblants a JSON o BSON.
    • Exemple: MongoDB
  2. Bases de Dades de Clau-Valor: Emmagatzemen dades com a parelles clau-valor.
    • Exemple: Redis
  3. 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
  4. 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

  1. Instal·la MongoDB en el teu sistema.
  2. Crea una base de dades anomenada empresa.
  3. Crea una col·lecció anomenada empleats.
  4. Insereix documents amb la següent estructura:
    {
        "nom": "Anna",
        "edat": 28,
        "departament": "Vendes"
    }
    
  5. Consulta tots els documents de la col·lecció empleats.
  6. Actualitza l'edat d'un empleat.
  7. 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

  1. Instal·la Redis en el teu sistema.
  2. Crea una clau-valor per emmagatzemar el nom d'un usuari.
  3. Consulta la clau-valor creada.
  4. Actualitza el valor de la clau.
  5. 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

  1. 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.
  2. 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.
  3. 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.

© Copyright 2024. Tots els drets reservats