Compara SQL y NoSQL según modelo, consultas, transacciones, consistencia, escalado, operación y evolución, evitando elegir por etiquetas generales.
Última actualización
Actualizada
Nivel
Aplicación
La elección de una base de datos no se resuelve preguntando si SQL o NoSQL es mejor. Se resuelve identificando el modelo, las invariantes, las consultas, el volumen, la consistencia y la capacidad operativa que necesita una parte concreta del sistema.
Una base de datos es un conjunto de capacidades y compromisos, no una etiqueta.
Dos productos clasificados como documentales pueden ofrecer transacciones, índices, replicación y consistencia muy diferentes. Dos motores relacionales pueden comportarse distinto bajo particiones, failover o cargas distribuidas.
Por eso la decisión debe formularse así:
Texto
necesidad del dominio
+ patrón de acceso
+ garantía requerida
+ escala y distribución
+ capacidad operativa
→ tecnología y configuración adecuadas
La misma aplicación puede utilizar más de una tecnología, pero cada motor adicional debe resolver un problema importante. Polyglot persistence sin necesidad real multiplica migraciones, permisos, incidentes y conocimiento especializado.
Identifica la unidad de consistencia. Si un pedido, sus líneas y su total deben cambiar de forma atómica, el almacenamiento debe permitir proteger esa invariante de manera razonable.
Aquí el motor protege parte de la integridad incluso si existe un error en la aplicación. La base no reemplaza reglas de dominio, pero funciona como última defensa.
Un documento puede crecer sin límite, concentrar conflictos y duplicar información. Si cada consulta necesita combinar colecciones, quizá el modelo no corresponde al patrón de acceso.
No asumas que documental significa sin transacciones. Revisa capacidades reales, alcance transaccional y costo. También verifica constraints disponibles; algunas invariantes quedarán en aplicación.
Modela nodos y relaciones como elementos de primera clase.
Es apropiado cuando el valor principal está en recorridos variables:
Rutas.
Recomendaciones.
Fraude.
Dependencias.
Redes sociales.
No es necesario usar una base de grafos para cualquier dato relacionado. Si las consultas son simples y estables, una relacional puede resolverlas con menor complejidad.
Un search engine optimiza texto, relevancia, filtros y agregaciones.
Texto
Catálogo es fuente de verdad
→ evento o CDC
→ índice de búsqueda
→ consultas de texto y filtros
El índice suele ser derivado. Puede tener retraso, perder documentos temporalmente o requerir reconstrucción. No debería decidir precio, stock o autorización sin consultar una autoridad apropiada.
PostgreSQL
→ autoridad de producto, precio y relaciones
Search index
→ búsqueda de texto y filtros derivados
Redis
→ caché de respuestas públicas frecuentes
No es obligatorio usar tres motores. Se introducen solo cuando la carga y funcionalidad lo justifican.
Usar varias bases es razonable cuando las necesidades son realmente distintas.
Ejemplo DomiSys:
Texto
pedidos, pagos e inventario
→ PostgreSQL
sesiones y rate limiting
→ Redis
búsqueda avanzada de catálogo
→ índice derivado cuando sea necesario
métricas de plataforma
→ sistema de telemetría especializado
Cada tecnología necesita:
Owner.
Backups o estrategia de reconstrucción.
Credenciales.
Monitoreo.
Upgrades.
Pruebas.
Respuesta a incidentes.
Si el equipo no puede operar ese costo, la solución no es sostenible.
Una base documental diseñada para lectura completa puede volverse incómoda si aparecen consultas cruzadas. Se puede añadir una proyección antes de migrar toda la autoridad.
Índices, transacciones y niveles de aislamiento profundiza en cómo una base relacional ejecuta consultas, protege invariantes y coordina operaciones concurrentes.