B2-T5: BASES DE DATOS NoSQL Y BIG DATA

Clasificación CAP por producto

CombinaciónSacrificaProductosUso típico
CA (C+A)Tolerancia a particionesRDBMS (MySQL, Oracle, PostgreSQL)Transaccional clásico
CP (C+P)DisponibilidadHBase, MongoDB (strong), ZooKeeperConsistencia crítica
AP (A+P)Consistencia (eventual)Cassandra, DynamoDB, CouchDB, RiakAlta disponibilidad

Clave: "¿Qué garantías sacrifica Cassandra?" → Sacrifica Consistencia (es AP). "¿RDBMS en CAP?" → CA.

Tema cada vez más preguntado en el TAI, especialmente el teorema CAP, la comparativa ACID vs BASE y los tipos de bases de datos NoSQL. En Big Data preguntan Hadoop, HDFS y MapReduce como conceptos, y cada vez más Spark. Memoriza las características de cada tipo NoSQL y en qué escenarios se usa cada uno.

BASES DE DATOS NoSQL: FUNDAMENTOS

¿Qué es NoSQL?

NoSQL ("Not Only SQL") engloba un conjunto de sistemas de gestión de bases de datos que no siguen el modelo relacional tradicional. Surgieron para abordar limitaciones de las BBDD relacionales en escenarios de alto volumen, alta velocidad y datos heterogéneos (las "3V" del Big Data).

CaracterísticaBBDD Relacional (SQL)BBDD NoSQL
Modelo de datosTablas con filas y columnas, esquema fijoVariable: documentos, clave-valor, columnas, grafos
EsquemaRígido (schema-on-write)Flexible o sin esquema (schema-on-read)
EscalabilidadVertical (más potencia al servidor)Horizontal (añadir más nodos / sharding)
TransaccionesACID completoGeneralmente BASE (eventual consistency)
ConsultasSQL estándar, JOINs potentesAPIs específicas, limitación en JOINs
RelacionesExcelente (claves foráneas, JOINs)Limitadas (excepto BBDD de grafos)
Caso de uso idealDatos estructurados, integridad transaccionalDatos no estructurados, alto volumen, baja latencia

Teorema CAP (Brewer, 2000)

El teorema CAP (formulado por Eric Brewer y demostrado por Gilbert y Lynch en 2002) establece que un sistema distribuido solo puede garantizar dos de tres propiedades simultáneamente:

PropiedadDescripción
C — Consistency (Consistencia)Todos los nodos ven los mismos datos al mismo tiempo. Una lectura siempre devuelve el último valor escrito
A — Availability (Disponibilidad)Toda petición recibe una respuesta (no necesariamente con el dato más reciente)
P — Partition tolerance (Tolerancia a particiones)El sistema sigue funcionando aunque haya fallos de comunicación entre nodos
Examen: En un sistema distribuido, las particiones de red siempre pueden ocurrir (P es inevitable). Por tanto, la elección real es entre CP (consistencia + particiones → sacrifica disponibilidad) y AP (disponibilidad + particiones → sacrifica consistencia). Ejemplo CP: MongoDB, HBase. Ejemplo AP: Cassandra, DynamoDB, CouchDB.

Clasificación CAP de BBDD populares

Tipo CAPBases de datosComportamiento ante partición
CPMongoDB, HBase, Redis (cluster), Zookeeper, etcdRechaza escrituras en nodos desconectados para mantener consistencia
APCassandra, DynamoDB, CouchDB, Riak, VoldemortAcepta lecturas/escrituras en todos los nodos → posible inconsistencia temporal
CARDBMS tradicionales (PostgreSQL, MySQL) en un solo nodoNo toleran particiones (no son distribuidos nativamente)

ACID vs BASE

ACID (Relacional)SignificadoBASE (NoSQL)Significado
AtomicityLa transacción se ejecuta completa o no se ejecutaBasically AvailableEl sistema responde siempre (aunque con datos no actualizados)
ConsistencyLa BBDD pasa de un estado válido a otro válidoSoft stateEl estado del sistema puede cambiar con el tiempo sin intervención
IsolationLas transacciones concurrentes no se interfierenEventually consistentEl sistema convergerá a un estado consistente si deja de recibir escrituras
DurabilityUna vez confirmada (commit), la transacción persiste
Examen: ACID = garantías fuertes, menor rendimiento a escala. BASE = garantías relajadas, mayor rendimiento y disponibilidad. Eventual consistency = los datos se propagarán a todos los nodos eventualmente, pero puede haber un período transitorio donde nodos distintos devuelven valores distintos.

TIPOS DE BASES DE DATOS NoSQL

Comparativa de tipos

TipoModelo de datosFortalezaDebilidadEjemplo principal
Clave-ValorPares (key → value), value es opacoMáxima velocidad, simplicidadSin consultas por contenido del valorRedis, Memcached, DynamoDB
DocumentoDocumentos JSON/BSON con estructura flexibleConsultas ricas sobre el contenidoJOINs limitados, denormalizaciónMongoDB, CouchDB
Columnar (wide column)Filas con familias de columnas dinámicasEscrituras masivas, series temporalesConsultas ad-hoc limitadasCassandra, HBase
GrafoNodos + aristas (relaciones) con propiedadesRelaciones complejas, traversalsEscalabilidad horizontal difícilNeo4j, Amazon Neptune

CLAVE-VALOR: REDIS

Características de Redis

CaracterísticaDescripción
TipoBase de datos clave-valor en memoria (in-memory)
PersistenciaOpcional: RDB (snapshots periódicos) y/o AOF (Append-Only File, log de operaciones)
RendimientoSubmilisegundo. Cientos de miles de operaciones/segundo
Modelo de hilosSingle-threaded (evita locks), I/O multithreaded desde Redis 6
ReplicaciónMaster-replica asíncrona
Alta disponibilidadRedis Sentinel (failover automático)
ClusteringRedis Cluster — sharding automático por hash slots (16.384 slots)
LicenciaBSD (hasta 7.0), luego RSALv2/SSPLv1 (desde 7.2)

Estructuras de datos en Redis

TipoComandos principalesUso típico
StringSET, GET, INCR, DECRCaché, contadores, flags
HashHSET, HGET, HGETALLObjetos (usuario: nombre, email…)
ListLPUSH, RPUSH, LPOP, RPOP, LRANGEColas, timelines, logs recientes
SetSADD, SMEMBERS, SINTER, SUNIONTags, relaciones, unicidad
Sorted Set (ZSet)ZADD, ZRANGE, ZRANK, ZRANGEBYSCORERankings, leaderboards, colas con prioridad
BitmapSETBIT, GETBIT, BITCOUNTFlags por usuario, actividad diaria
HyperLogLogPFADD, PFCOUNTConteo de elementos únicos aproximado (12 KB fijos)
StreamXADD, XREAD, XREADGROUPLog de eventos, mensajería (similar a Kafka)

Políticas de expiración y evicción

PolíticaDescripción
TTL (Time To Live)Cada clave puede tener un tiempo de expiración (EXPIRE key seconds)
noevictionRechaza escrituras si la memoria está llena (por defecto)
allkeys-lruEvicta las claves menos recientemente usadas (cualquier clave)
volatile-lruEvicta las menos usadas, solo entre claves con TTL
allkeys-randomEvicta claves al azar
volatile-ttlEvicta las que están más cerca de expirar
Examen: Redis = in-memory, submilisegundo, clave-valor con estructuras ricas. Uso principal: caché, sesiones, colas, pub/sub, contadores atómicos. Persistencia RDB = snapshots (rápido en carga, puede perder datos del último intervalo). AOF = log de escrituras (más seguro, archivo más grande).

DOCUMENTOS: MONGODB

Características de MongoDB

CaracterísticaDescripción
ModeloDocumentos BSON (Binary JSON) almacenados en colecciones
EsquemaFlexible — cada documento puede tener campos distintos (schema-on-read)
ConsultasLenguaje de consulta rico (MQL): filtros, proyecciones, agregación (pipeline)
ÍndicesB-tree, compuestos, texto, geoespaciales (2dsphere), wildcard
ReplicaciónReplica Set: 1 primary + N secondaries. Failover automático
ShardingParticionamiento horizontal automático por shard key
TransaccionesMulti-documento ACID desde MongoDB 4.0 (replica set) y 4.2 (sharded)
AgregaciónPipeline: $match, $group, $sort, $project, $lookup (JOIN)
CAPCP — consistencia por defecto (lecturas van al primary)

Conceptos de MongoDB

Concepto SQLEquivalente MongoDBDescripción
Base de datosBase de datosContenedor de colecciones
TablaColecciónGrupo de documentos (sin esquema fijo)
FilaDocumentoObjeto BSON (JSON binario)
ColumnaCampoPar clave-valor dentro del documento
Clave primaria_idGenerado automáticamente (ObjectId de 12 bytes)
JOIN$lookup (pipeline)Agregación que simula JOIN entre colecciones
ÍndiceÍndiceB-tree sobre campos del documento

BSON ObjectId

El ObjectId de MongoDB es un identificador único de 12 bytes con esta estructura:

BytesContenido
4 bytesTimestamp (segundos desde epoch Unix)
5 bytesValor aleatorio (único por proceso)
3 bytesContador incremental

COLUMNAR: CASSANDRA

Características de Apache Cassandra

CaracterísticaDescripción
ModeloWide-column store (familias de columnas con filas dinámicas)
ArquitecturaPeer-to-peer (sin master). Todos los nodos son iguales (ring)
ParticionamientoConsistent hashing — datos distribuidos automáticamente por partition key
ReplicaciónConfigurable: factor de replicación N (ej. RF=3 = 3 copias)
ConsistenciaTunable consistency: ONE, QUORUM, ALL (configurable por operación)
CAPAP por defecto (disponibilidad > consistencia). Puede acercarse a CP con QUORUM
LenguajeCQL (Cassandra Query Language) — similar a SQL pero sin JOINs ni subqueries
EscrituraMuy rápida — append-only (LSM-tree: memtable → SSTable en disco)
OrigenFacebook (2008), Apache Software Foundation

Niveles de consistencia en Cassandra

NivelLectura: responde cuando...Escritura: confirma cuando...
ONE1 réplica responde1 réplica confirma la escritura
QUORUM(RF/2)+1 réplicas responden(RF/2)+1 réplicas confirman
ALLTodas las réplicas respondenTodas confirman
LOCAL_QUORUMQuorum dentro del datacenter localQuorum en el datacenter local
Examen: Cassandra usa consistent hashing (ring de tokens) para distribuir datos. No tiene un nodo master — es totalmente descentralizada. Esto la hace ideal para alta disponibilidad multi-datacenter. Las escrituras son extremadamente rápidas porque son append-only (LSM-tree).

GRAFOS: NEO4J

Características de Neo4j

CaracterísticaDescripción
ModeloGrafo de propiedades: nodos (con etiquetas y propiedades) + relaciones (dirigidas, con tipo y propiedades)
LenguajeCypher — lenguaje declarativo para consultas de grafos
AlmacenamientoNativo de grafos (index-free adjacency) — los nodos tienen punteros directos a sus vecinos
TraversalEficiente para relaciones profundas — O(1) por salto de relación
TransaccionesACID completo
Caso de usoRedes sociales, detección de fraude, motores de recomendación, gestión de conocimiento

Sintaxis básica de Cypher

OperaciónCypher
Crear nodoCREATE (p:Persona {nombre: "Ana", edad: 30})
Crear relaciónMATCH (a:Persona), (b:Persona) WHERE a.nombre="Ana" AND b.nombre="Luis" CREATE (a)-[:CONOCE]->(b)
ConsultarMATCH (p:Persona)-[:CONOCE]->(amigo) RETURN p.nombre, amigo.nombre
Camino más cortoMATCH path=shortestPath((a)-[*]-(b)) RETURN path
Examen: La ventaja clave de una BBDD de grafos sobre una relacional para datos con muchas relaciones es que los JOINs en SQL crecen exponencialmente en coste con la profundidad, mientras que los traversals en grafos se mantienen en tiempo constante por salto (index-free adjacency).

OTRAS BBDD NoSQL RELEVANTES

Base de datosTipoCaracterísticas claveCaso de uso
Amazon DynamoDBClave-valor / documentoServerless, managed, auto-scaling, DAX (caché)Aplicaciones web, gaming, IoT
Apache HBaseColumnarSobre HDFS, Hadoop ecosystem, consistente (CP)Big Data, análisis sobre Hadoop
CouchDBDocumentoHTTP/REST API, replicación multi-master, MVCCApps offline-first, sincronización
ElasticsearchDocumento (búsqueda)Basado en Apache Lucene, full-text search, agregacionesBúsqueda, logging (ELK stack)
InfluxDBSeries temporalesOptimizado para time-series data, retention policiesMonitorización, IoT, métricas
MemcachedClave-valor (caché)Solo en memoria, sin persistencia, multi-threadedCaché simple de objetos

BIG DATA: CONCEPTOS

Las V's del Big Data

VDescripción
VolumenCantidad masiva de datos (terabytes, petabytes, exabytes)
VelocidadRapidez de generación y procesamiento (streaming, tiempo real)
VariedadDatos estructurados, semiestructurados y no estructurados
VeracidadCalidad, fiabilidad y precisión de los datos
ValorCapacidad de extraer información útil de los datos

Procesamiento: batch vs streaming

AspectoBatch (por lotes)Streaming (tiempo real)
LatenciaAlta (minutos a horas)Baja (milisegundos a segundos)
DatosDataset completo y acotado (bounded)Flujo continuo e ilimitado (unbounded)
HerramientasHadoop MapReduce, Spark (batch), HiveSpark Streaming, Kafka Streams, Apache Flink, Storm
Caso de usoETL nocturno, informes históricosDetección de fraude, monitorización, alertas

ECOSISTEMA HADOOP

Apache Hadoop: componentes principales

Apache Hadoop (proyecto Apache Software Foundation) es un framework de código abierto para almacenamiento y procesamiento distribuido de grandes volúmenes de datos en clusters de hardware commodity.

ComponenteFunciónDescripción
HDFSAlmacenamientoSistema de ficheros distribuido. Archivos divididos en bloques (128 MB por defecto), replicados en múltiples nodos
MapReduceProcesamientoModelo de programación: fase Map (transformar datos en pares clave-valor) + fase Reduce (agregar valores por clave)
YARNGestión de recursosYet Another Resource Negotiator. Planifica y gestiona recursos del cluster para múltiples frameworks
Hadoop CommonUtilidadesLibrerías y utilidades comunes para los demás módulos

HDFS: arquitectura

ComponenteRolDescripción
NameNodeMasterAlmacena los metadatos del sistema de ficheros (árbol de directorios, ubicación de bloques). Único punto de fallo (se mitiga con HA: standby NameNode)
DataNodeWorkerAlmacena los bloques de datos reales. Envía heartbeats al NameNode
Secondary NameNodeAuxiliarNO es un failover. Hace checkpoints del NameNode (merge de edits log con fsimage)
Parámetro HDFSValor por defectoDescripción
Tamaño de bloque128 MB (era 64 MB)Cada archivo se divide en bloques de este tamaño
Factor de replicación3Cada bloque se replica en 3 DataNodes distintos
Rack awarenessActivadoLas réplicas se distribuyen en distintos racks para tolerancia a fallos
Examen: HDFS es un sistema write-once, read-many (optimizado para lectura secuencial de archivos grandes). Bloques de 128 MB. Factor de replicación 3 por defecto. El NameNode es el punto único de fallo → se resuelve con HA (2 NameNodes activo/standby + Zookeeper).

MapReduce: paradigma de procesamiento

FaseEntradaSalidaDescripción
MapRegistros del archivo de entradaPares (clave, valor) intermediosTransforma/filtra cada registro de forma independiente y paralela
Shuffle & SortPares intermediosPares agrupados por claveEl framework agrupa y ordena los pares por clave (automático)
ReduceClave + lista de valoresResultado finalAgrega los valores de cada clave (suma, conteo, concatenación…)

Herramientas del ecosistema Hadoop

HerramientaFunciónDescripción
Apache HiveData WarehouseSQL-like (HiveQL) sobre Hadoop. Traduce consultas SQL a jobs MapReduce/Tez/Spark
Apache PigETLLenguaje Pig Latin para transformación de datos. Nivel de abstracción sobre MapReduce
Apache HBaseBBDD columnarBBDD NoSQL sobre HDFS. Acceso aleatorio de baja latencia a datos Hadoop
Apache SqoopImportación/exportaciónTransferencia de datos entre HDFS y BBDD relacionales (MySQL, Oracle, PostgreSQL)
Apache FlumeIngesta de logsRecolección y transporte de logs/eventos a HDFS
Apache OozieOrquestaciónPlanificador de workflows de jobs Hadoop (MapReduce, Pig, Hive, etc.)
Apache ZookeeperCoordinaciónServicio centralizado de configuración, naming y sincronización distribuida
Apache KafkaMensajería/StreamingPlataforma de streaming distribuida. Topics, particiones, consumer groups. Alta throughput

APACHE SPARK

Características de Spark

CaracterísticaDescripción
TipoFramework de procesamiento distribuido en memoria
VelocidadHasta 100× más rápido que MapReduce para procesamiento en memoria
Abstracción principalRDD (Resilient Distributed Dataset) — colección distribuida inmutable con tolerancia a fallos
APIs modernasDataFrame y Dataset — APIs estructuradas con optimizador Catalyst
LenguajesScala (nativo), Java, Python (PySpark), R (SparkR)
AlmacenamientoCompatible con HDFS, S3, Cassandra, HBase, cualquier fuente
Cluster managersYARN, Mesos, Kubernetes, standalone

Componentes de Spark

ComponenteFunciónDescripción
Spark CoreMotor baseRDDs, planificación de tareas, gestión de memoria, E/S
Spark SQLDatos estructuradosDataFrames, consultas SQL, integración con Hive
Spark StreamingStreamingProcesamiento de flujos de datos en micro-batches
Structured StreamingStreaming modernoAPI declarativa sobre DataFrames para streaming con garantías exactly-once
MLlibMachine LearningAlgoritmos de ML distribuidos (clasificación, regresión, clustering, CF)
GraphXProcesamiento de grafosAPI para computación de grafos distribuida (PageRank, etc.)

Spark vs MapReduce

AspectoMapReduceSpark
ProcesamientoDisco (lee/escribe entre fases)Memoria (mantiene datos en RAM)
VelocidadLento (I/O a disco entre map y reduce)Hasta 100× más rápido en memoria
ModeloSolo Map + ReduceTransformaciones y acciones ricas (map, filter, join, groupBy…)
IteracionesIneficiente (escribe a disco cada iteración)Eficiente (datos en memoria entre iteraciones)
StreamingNo (solo batch)Sí (Spark Streaming / Structured Streaming)
Facilidad de usoVerbose (Java)APIs concisas (Scala, Python)
Examen: La principal ventaja de Spark sobre MapReduce es el procesamiento en memoria — no escribe resultados intermedios a disco. Esto lo hace especialmente superior en algoritmos iterativos (ML, grafos). Spark no reemplaza HDFS — usa HDFS (u otro) como almacenamiento.

DATA WAREHOUSE, DATA LAKE Y ARQUITECTURAS DE DATOS

Comparativa de arquitecturas

ConceptoTipo de datosEsquemaUsuariosHerramienta típica
Data WarehouseEstructurados (ETL previo)Schema-on-write (estrella/copo de nieve)Analistas de negocioHive, Redshift, BigQuery, Snowflake
Data LakeTodos (raw: estructurados + no estructurados)Schema-on-readData scientists, ingenieros de datosHDFS, S3, Azure Data Lake
Data LakehouseTodos (raw + curados)Schema-on-read + enforcementAmbos perfilesDelta Lake, Apache Iceberg, Apache Hudi

ETL vs ELT

ProcesoFlujoCuándo usar
ETL (Extract, Transform, Load)Extraer → Transformar (fuera del destino) → Cargar en DWData Warehouse tradicional, datos estructurados
ELT (Extract, Load, Transform)Extraer → Cargar crudo → Transformar dentro del Data LakeBig Data, Data Lake, cuando la transformación es costosa


FUENTES PÚBLICAS

Este resumen ha sido elaborado íntegramente a partir de fuentes de dominio público. No se ha utilizado material con copyright de terceros ni material de preparadores.
FuenteTipoReferencia
Apache Hadoop documentationDocumentación oficialhadoop.apache.org (Apache 2.0)
Apache Spark documentationDocumentación oficialspark.apache.org
MongoDB documentationDocumentación oficialdocs.mongodb.com
Redis documentationDocumentación oficialredis.io
Brewer (2000) — Teorema CAPPublicación académicaDominio público

¿Quieres practicar este tema con tests?

MIMIR tiene más de 5.000 preguntas verificadas, simulacros con penalización real y chat IA que resuelve tus dudas sobre este tema.

Abrir MIMIR gratis →