Diferencia entre revisiones de «NoSQL»
(Página creada con «= NoSQL = '''NoSQL''' (''Not Only SQL'') es un conjunto de sistemas de gestión de '''BD''' (bases de datos) diseñados para manejar grandes volúmenes de datos no estructurados o semiestructurados. A diferencia de los sistemas basados en '''SQL''', los motores NoSQL no dependen de un esquema rígido de tablas y relaciones, lo que les otorga mayor flexibilidad, escalabilidad y rendimiento en entornos distribuidos. En el ámbito de la '''seguridad''', comprender el f…») |
m (Arreglo de categoria) |
||
| Línea 100: | Línea 100: | ||
== Conclusión == | == Conclusión == | ||
NoSQL representa una evolución hacia sistemas más adaptables, distribuidos y escalables. Sin embargo, su potencia requiere una gestión cuidadosa en cuanto a configuración, permisos y seguridad de datos para evitar brechas críticas en entornos modernos de '''seguridad.''' | NoSQL representa una evolución hacia sistemas más adaptables, distribuidos y escalables. Sin embargo, su potencia requiere una gestión cuidadosa en cuanto a configuración, permisos y seguridad de datos para evitar brechas críticas en entornos modernos de '''seguridad.''' | ||
[[Categoría:Bases de datos]] | |||
Revisión actual - 14:31 1 nov 2025
NoSQL
NoSQL (Not Only SQL) es un conjunto de sistemas de gestión de BD (bases de datos) diseñados para manejar grandes volúmenes de datos no estructurados o semiestructurados. A diferencia de los sistemas basados en SQL, los motores NoSQL no dependen de un esquema rígido de tablas y relaciones, lo que les otorga mayor flexibilidad, escalabilidad y rendimiento en entornos distribuidos.
En el ámbito de la seguridad, comprender el funcionamiento de NoSQL es crucial para proteger apps, srv y API modernas que utilizan bases de datos no relacionales.
Características principales
- Sin esquema fijo: Los datos pueden almacenarse en distintos formatos (documentos, grafos, pares clave-valor o columnas).
- Escalabilidad horizontal: Los datos se distribuyen entre múltiples srv o nodos, favoreciendo la expansión del sistema sin pérdida de rendimiento.
- Alto rendimiento: Optimizado para operaciones de lectura/escritura masiva y consultas en tiempo real.
- Alta disponibilidad (HA): Mediante replicación y redundancia entre nodos.
- Flexibilidad: Ideal para apps con estructuras dinámicas y datos cambiantes.
Tipos de BD NoSQL
1. Clave-Valor
- Almacenan información como pares de clave → valor.
- Ideales para cache, sesiones de usr o cfg temporales.
- Ejemplos: Redis, Riak, Amazon DynamoDB.
SET usr:1 "Darfe" GET usr:1
2. Documentales
- Los datos se almacenan en documentos tipo JSON o BSON.
- Permiten consultas complejas sin esquema predefinido.
- Usadas en apps web, móviles y microservicios.
- Ejemplos: MongoDB, CouchDB, Firestore.
{
"_id": 1,
"nombre": "Darfe",
"correo": "user@darfe.es",
"rol": "admin"
}
3. Columnar
- Organizan la información por columnas en lugar de filas.
- Son ideales para análisis de datos y consultas masivas.
- Ejemplos: Cassandra, HBase, ScyllaDB.
CREATE TABLE usuarios (
id UUID PRIMARY KEY,
nombre TEXT,
edad INT
);
4. Grafos
- Representan relaciones mediante nodos (entidades) y aristas (enlaces).
- Ideales para apps de redes sociales, análisis de relaciones o motores de recomendación.
- Ejemplos: Neo4j, ArangoDB, OrientDB.
CREATE (a:Usuario {nombre: "Darfe"})-[:SIGUE]->(b:Usuario {nombre: "Lía"})
Ventajas y Desventajas
Ventajas:
- Escalabilidad masiva y alta disponibilidad.
- Flexibilidad en el diseño de datos.
- Ideal para sistemas distribuidos y de alta concurrencia.
Desventajas:
- Falta de estandarización (cada motor usa su propia sintaxis o API).
- Pérdida parcial de las propiedades ACID.
- Complejidad en la replicación y la seguridad avanzada.
Seguridad y Buenas Prácticas
- Validación de entradas: Evitar inyecciones NoSQL limitando los operadores permitidos.
- Control de permisos: Asignar privilegios mínimos a los usr y srv de base de datos.
- Autenticación y cifrado: Activar TLS y autenticación obligatoria.
- Auditoría constante: Monitorear accesos y operaciones críticas.
- Evitar exposición pública: No dejar puertos abiertos sin control (ej. :27017 en MongoDB).
Inyección NoSQL
Una inyección NoSQL ocurre cuando un atacante manipula una consulta construida dinámicamente (por ejemplo, en formato JSON), logrando acceder o modificar datos sin autorización.
Ejemplo de vulnerabilidad:
{
"usr": {"$ne": null},
"pass": {"$ne": null}
}
Esto fuerza la coincidencia de cualquier registro, permitiendo acceso no autorizado.
Prevención:
- Usar consultas parametrizadas o funciones de validación seguras.
- Sanitizar la entrada del usr y rechazar operadores como `$ne`, `$gt`, `$where`.
- Aplicar autenticación robusta y limitar las respuestas de error.
Conclusión
NoSQL representa una evolución hacia sistemas más adaptables, distribuidos y escalables. Sin embargo, su potencia requiere una gestión cuidadosa en cuanto a configuración, permisos y seguridad de datos para evitar brechas críticas en entornos modernos de seguridad.