Introducción

Las bases de datos NoSQL (Not Only SQL) son una categoría de sistemas de gestión de bases de datos que se diseñaron para manejar grandes volúmenes de datos no estructurados y semiestructurados. A diferencia de las bases de datos relacionales tradicionales, NoSQL no utiliza el modelo de tablas y relaciones, sino que adopta diferentes modelos de datos para satisfacer necesidades específicas de almacenamiento y consulta.

Tipos de Bases de Datos NoSQL

Las bases de datos NoSQL se pueden clasificar en varios tipos según su modelo de datos:

  1. Bases de Datos de Documentos:

    • Almacenan datos en formato de documentos (generalmente JSON, BSON o XML).
    • Ejemplos: MongoDB, CouchDB.
  2. Bases de Datos de Clave-Valor:

    • Almacenan datos como pares clave-valor.
    • Ejemplos: Redis, DynamoDB.
  3. Bases de Datos de Columnas:

    • Almacenan datos en columnas en lugar de filas.
    • Ejemplos: Apache Cassandra, HBase.
  4. Bases de Datos de Grafos:

    • Almacenan datos en nodos y aristas, optimizadas para consultas de grafos.
    • Ejemplos: Neo4j, ArangoDB.

Comparación entre Bases de Datos Relacionales y NoSQL

Característica Bases de Datos Relacionales Bases de Datos NoSQL
Modelo de Datos Tablas y relaciones Documentos, Clave-Valor, Columnas, Grafos
Escalabilidad Vertical (aumentar capacidad del servidor) Horizontal (añadir más servidores)
Flexibilidad del Esquema Estricto Flexible
Consistencia Alta (ACID) Eventual (BASE)
Tipos de Consultas SQL Varía según el tipo de NoSQL
Casos de Uso Transacciones complejas, integridad de datos Big Data, datos no estructurados, alta disponibilidad

Ejemplos Prácticos

Ejemplo 1: MongoDB (Base de Datos de Documentos)

MongoDB almacena datos en documentos JSON. A continuación, se muestra un ejemplo de cómo insertar y consultar datos en MongoDB.

Inserción de Datos:

db.usuarios.insertOne({
    "nombre": "Juan Pérez",
    "edad": 30,
    "email": "[email protected]",
    "direccion": {
        "calle": "Calle Falsa 123",
        "ciudad": "Ciudad Ejemplo",
        "pais": "País Ejemplo"
    }
});

Consulta de Datos:

db.usuarios.find({ "edad": { "$gt": 25 } });

Ejemplo 2: Redis (Base de Datos de Clave-Valor)

Redis es una base de datos en memoria que almacena datos como pares clave-valor.

Inserción de Datos:

SET nombre "Juan Pérez"
SET edad 30
SET email "[email protected]"

Consulta de Datos:

GET nombre
GET edad
GET email

Ejercicio Práctico

Ejercicio 1: Trabajando con MongoDB

  1. Inserta un documento en una colección llamada productos con los siguientes datos:

    • Nombre: "Laptop"
    • Marca: "Marca Ejemplo"
    • Precio: 1200
    • Stock: 50
  2. Realiza una consulta para encontrar todos los productos cuyo precio sea mayor a 1000.

Solución:

Inserción de Datos:

db.productos.insertOne({
    "nombre": "Laptop",
    "marca": "Marca Ejemplo",
    "precio": 1200,
    "stock": 50
});

Consulta de Datos:

db.productos.find({ "precio": { "$gt": 1000 } });

Ejercicio 2: Trabajando con Redis

  1. Inserta los siguientes pares clave-valor en Redis:

    • Clave: "producto:1:nombre", Valor: "Laptop"
    • Clave: "producto:1:marca", Valor: "Marca Ejemplo"
    • Clave: "producto:1:precio", Valor: 1200
  2. Recupera el valor de la clave "producto:1:precio".

Solución:

Inserción de Datos:

SET producto:1:nombre "Laptop"
SET producto:1:marca "Marca Ejemplo"
SET producto:1:precio 1200

Consulta de Datos:

GET producto:1:precio

Conclusión

Las bases de datos NoSQL ofrecen una alternativa flexible y escalable a las bases de datos relacionales tradicionales, especialmente para aplicaciones que manejan grandes volúmenes de datos no estructurados o semiestructurados. Comprender los diferentes tipos de bases de datos NoSQL y sus casos de uso es crucial para seleccionar la tecnología adecuada para cada proyecto.

En el próximo tema, exploraremos los Data Lakes, una solución de almacenamiento que permite gestionar grandes volúmenes de datos en su forma nativa.

© Copyright 2024. Todos los derechos reservados