COMPARATIVA

SQL (relacional) vs NoSQL

La decisión que más se toma por moda y menos por análisis. La respuesta aburrida —y correcta en la mayoría de proyectos— es que una base de datos relacional te va a ir bien.

LA DIFERENCIA

Una base relacional impone un esquema y garantiza que los datos son coherentes: si una transacción falla, no queda nada a medias. NoSQL relaja esas garantías a cambio de flexibilidad de forma y facilidad para repartir la carga entre muchas máquinas. La pregunta no es cuál es mejor, es si tu problema justifica renunciar a las garantías.

CARA A CARA
Comparación entre SQL (relacional) y NoSQL
DimensiónSQL (relacional)NoSQL
EsquemaFijo y validadoFlexible, definido por la aplicación
ConsistenciaTransacciones ACIDHabitualmente eventual
Consultas complejasSu punto fuerte: joins y agregacionesLimitadas o hay que duplicar datos
EscaladoVertical, y horizontal con esfuerzoHorizontal por diseño
Cambios de estructuraMigraciones explícitasInmediatos, pero la deuda se acumula
Madurez del ecosistemaDécadas de herramientasMuy variable según el motor
Cuándo SQL (relacional)

Por defecto, y sobre todo cuando los datos tienen relaciones entre sí, cuando hace falta consistencia —cualquier cosa que toque dinero, stock o facturación— o cuando vas a hacer consultas que no tienes previstas todavía.

Cuándo NoSQL

Cuando la forma del dato es genuinamente irregular, cuando el volumen exige repartir entre muchas máquinas desde el principio, o para casos concretos: caché, series temporales, búsqueda, grafos.

El error que se comete

Elegir NoSQL por el escalado que no vas a necesitar. Una base relacional en una máquina razonable aguanta muchísimo más de lo que casi cualquier proyecto llega a exigirle, y renunciar a las transacciones para prepararse a un volumen hipotético cuesta caro cuando aparece el primer descuadre de stock que nadie sabe explicar.