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ística | Relacional (SQL) | Clave-Valor (NoSQL) |
|---|---|---|
| Estructura | Tablas, filas y columnas | Claves y valores |
| Flexibilidad | Fija (esquema definido) | Alta (datos sin esquema fijo) |
| Escalabilidad | Vertical (servidor más potente) | Horizontal (múltiples servidores) |
| Rapidez en consultas | Más lenta en grandes volúmenes | Muy rápida para lecturas y escrituras |
| Uso típico | Datos 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.