Bases de datos nosql

1.1. ¿Qué es NoSQL?

Las bases de datos NoSQL (Not Only SQL) son una alternativa a las bases de datos relacionales. Se crearon para manejar grandes volúmenes de datos de manera más flexible y escalable.

A diferencia de las bases de datos tradicionales, donde los datos se almacenan en tablas con filas y columnas, las bases de datos NoSQL pueden almacenar información de diferentes formas:
✔ Como documentos (JSON, BSON)
✔ Como pares clave-valor
✔ Como grafos (relaciones entre datos)
✔ Como columnas (para grandes volúmenes de datos)

Ejemplo:
Una base de datos SQL almacena un usuario así:

1INSERT INTO usuarios (id, nombre, edad) VALUES (1, 'Ana', 30);

En NoSQL (clave-valor), el mismo usuario se almacena como:

1SET usuario:1 "{'nombre': 'Ana', 'edad': 30}"

Aquí, la clave es usuario:1 y el valor es un objeto con los datos del usuario.


1.2. Tipos de bases de datos NoSQL

Existen varios tipos de bases de datos NoSQL:

  • Clave-valor (Redis, Memcached): Datos guardados como un diccionario.
  • Documentales (MongoDB, Firebase Firestore): Datos en formato JSON.
  • Grafos (Neo4j, ArangoDB): Datos conectados como en redes sociales.
  • Columnares (Cassandra, HBase): Datos organizados en columnas para grandes volúmenes.

Ejemplo de una base clave-valor en comparación con una documental:

1# Clave-valor (Redis)
2SET usuario:1 "Ana, 30"
3
4# Documental (MongoDB)
5db.usuarios.insertOne({ nombre: "Ana", edad: 30 })

1.3. Introducción a las bases de datos clave-valor

Las bases de datos clave-valor son las más simples y rápidas de las NoSQL. Funcionan como un diccionario: cada dato tiene una clave única y un valor asociado.

🗝 Ejemplo de clave-valor en la vida real:

  • Agenda de contactos 📞 → Nombre (clave) y número de teléfono (valor).
  • Diccionario de palabras 📖 → Palabra (clave) y significado (valor).
  • Caché de una página web 🌐 → URL (clave) y contenido en HTML (valor).

Ejemplo en Redis:

1SET usuario:1 "Ana"
2GET usuario:1  # Devuelve "Ana"

1.4. Comparación con bases de datos relacionales

CaracterísticaRelacional (SQL)Clave-Valor (NoSQL)
EstructuraTablas, filas y columnasClaves y valores
FlexibilidadFija (esquema definido)Alta (datos sin esquema fijo)
EscalabilidadVertical (servidor más potente)Horizontal (múltiples servidores)
Rapidez en consultasMás lenta en grandes volúmenesMuy rápida para lecturas y escrituras
Uso típicoDatos estructurados (facturas, clientes, etc.)Caché, sesiones, contadores

📌 Ejemplo de diferencia práctica:
En una base de datos relacional, un producto en una tienda se almacena así:

1INSERT INTO productos (id, nombre, precio) VALUES (1, 'Laptop', 1200);

En una base clave-valor, el mismo producto se guarda así:

1SET producto:1 "{'nombre': 'Laptop', 'precio': 1200}"

📌 Diferencia clave: En SQL, el esquema es estricto (columnas definidas), mientras que en clave-valor es más flexible.


1.5. Casos de uso y ventajas de bases clave-valor

Casos de uso

Las bases de datos clave-valor son ideales para:
Caché: Almacenar datos temporales para responder más rápido.
Sesiones de usuario: Guardar información de usuarios en una web.
Colas de mensajes: Procesar eventos de forma eficiente.
Autenticación: Almacenar tokens de acceso (JWT).

Ejemplo en Redis:

1# Guardar la sesión de un usuario
2SET sesion:1234 "{'usuario': 'Ana', 'expira': '2025-03-07'}"
3
4# Obtener la sesión
5GET sesion:1234

🚀 Ventajas de las bases clave-valor

Rapidez: Son extremadamente rápidas para leer y escribir datos.
Escalabilidad: Se pueden distribuir en múltiples servidores sin problemas.
Flexibilidad: No necesitan un esquema fijo como las bases de datos SQL.
Simplicidad: Fácil de entender y usar con comandos simples.