Skip to content
SP StackPractices
intermediate

Selección de Base de Datos NoSQL

Guía práctica para elegir la base de datos NoSQL correcta. Compara documentos, clave-valor, columnas anchas y grafos con criterios de selección y tips de migración.

Selección de Base de Datos NoSQL

Introducción

Las bases de datos NoSQL intercambian la consistencia estricta y el modelo relacional del SQL por flexibilidad, escalabilidad horizontal y patrones de acceso especializados. Elegir la correcta significa hacer coincidir la forma de tus datos, los patrones de consulta y los requerimientos de consistencia con el store adecuado.

Las Cuatro Familias NoSQL

FamiliaEstructuraMejor ParaEjemplos
DocumentoDocumentos tipo JSON con estructuras anidadasGestión de contenido, perfiles de usuario, catálogosMongoDB, Firestore, Couchbase
Clave-ValorBúsquedas simples clave → valorSesiones, caching, feature flagsRedis, DynamoDB, Riak
Columnas AnchasFamilias de columnas con filas como mapas dispersosSeries de tiempo, telemetría de alta escritura, mensajeríaCassandra, HBase, ScyllaDB
GrafoNodos y relaciones con propiedadesRedes sociales, motores de recomendación, detección de fraudeNeo4j, Amazon Neptune

Document Stores: MongoDB

Cuándo Elegir

  • Estructuras de datos ricas y anidadas con arrays y subdocumentos
  • Esquema flexible que evoluciona con el tiempo
  • Necesidad de índices secundarios y pipelines de agregación
  • Consultas que se parecen a matching de objetos JavaScript

Trade-offs

ProContra
Esquema flexibleLa validación de esquema debe configurarse explícitamente
Lenguaje de consulta ricoLos joins son costosos y limitados
Índices secundariosLos índices consumen RAM y ralentizan escrituras
Escalado horizontal (sharding)Sharding agrega complejidad operativa

Key-Value Stores: DynamoDB y Redis

DynamoDB (AWS)

Mejor para: latencia predecible a cualquier escala, patrones de lectura/escritura simples, arquitecturas serverless.

Restricción crítica: Los patrones de acceso deben conocerse de antemano. DynamoDB está optimizado para rutas de consulta conocidas, no para exploración ad-hoc.

Redis

Mejor para: caching, leaderboards en tiempo real, rate limiting, almacenamiento de sesiones.

Restricción crítica: Todos los datos deben caber en RAM. Redis no es un store primario para datasets grandes.

Wide-Column Stores: Cassandra

Cuándo Elegir

  • Workloads write-heavy (series de tiempo, IoT, mensajería)
  • Necesidad de escalabilidad lineal en hardware commodity
  • Tolerancia a consistencia eventual y CQL

Modelo de Datos

Cassandra es query-first: las tablas se diseñan alrededor de consultas específicas de lectura, no de entidades normalizadas.

Matriz de Decisión

RequerimientoMejor ElecciónPor Qué
Documentos JSON flexibles y anidadosMongoDBModelo de documento nativo, lenguaje de consulta rico
Búsquedas por clave con latencia predecible a escalaDynamoDBLatencia de un dígito en ms, auto-scaling, serverless
Escrituras de series de tiempo de alto throughputCassandraAlmacenamiento log-structured, excelente performance de escritura
Datos efímeros y cachingRedisVelocidad en memoria, estructuras de datos ricas
Recorrido complejo de relacionesNeo4jRecorridos de grafo optimizados
Transacciones ACID multi-itemPostgreSQLLos stores NoSQL típicamente carecen de transacciones cross-documento

Tips de Migración desde SQL

Hábito SQLAdaptación NoSQL
Tablas normalizadasEmbebe datos relacionados cuando se acceden juntos; referencia cuando se acceden por separado
JOINs por todas partesDiseña tablas/colecciones alrededor de patrones de consulta, no de entidades
IDs auto-incrementalesUsa UUIDs o claves compuestas (user_id + timestamp)
Analytics ad-hocUsa change data capture (CDC) para stream a un data warehouse
Fuente única de verdadAcepta que diferentes stores pueden tener diferentes vistas de la verdad (CQRS)

Mejores Prácticas

  • Modela para tus lecturas, no para tus escrituras — el performance NoSQL depende del patrón de acceso
  • Evita particiones calientes — distribuye escrituras uniformemente entre claves de partición
  • Configura TTLs donde sea apropiado — expira datos viejos automáticamente en lugar de jobs de limpieza
  • Prueba con volúmenes de datos de producción — el comportamiento a 1K filas no predice el comportamiento a 1B filas
  • Ten un camino de migración — la gravedad de datos es real; elige cuidadosamente porque migrar después es costoso

Errores Comunes

  • Usar MongoDB como cache (Redis es más barato y rápido)
  • Usar DynamoDB para analytics ad-hoc (Athena/BigQuery son más adecuados)
  • Usar Cassandra para OLTP con consultas complejas (Cassandra brilla en queries simples, scoped a partición)
  • Tratar NoSQL como “SQL que escala mejor” — el modelo de datos es fundamentalmente diferente
  • Ignorar complejidad operativa — Cassandra y MongoDB sharded requieren expertise operativo dedicado

Preguntas Frecuentes

¿Debería migrar de PostgreSQL a MongoDB por flexibilidad?

No solo por flexibilidad. PostgreSQL tiene JSONB, que te da flexibilidad de documento mientras mantienes transacciones ACID. Migra a MongoDB cuando necesites sharding horizontal o un lenguaje de consulta nativo de documentos.

¿Puedo usar múltiples bases de datos NoSQL en una aplicación?

Sí, y es común. Usa Redis para cache/sesiones, DynamoDB para perfiles de usuario, y Elasticsearch para búsqueda. Esto es persistencia políglota. El trade-off es complejidad operativa.

¿Cómo manejo transacciones entre bases de datos NoSQL?

La mayoría de stores NoSQL no soportan transacciones ACID cross-documento o cross-table. Usa sagas, patrones outbox, u operaciones idempotentes con entrega at-least-once para lograr consistencia eventual.