Volver al blog

¿Por qué NoSQL es más rápido que SQL?

20 de octubre de 2022

SQL y NoSQL son distintos tipos de lenguajes de bases de datos, tienen sus pros y sus contras, pero ¿por qué es mejor usar uno u otro? ¿Hay alguna diferencia de rendimiento entre ellos?

¿Lenguajes o bases de datos?

Antes que nada, desmitifiquemos algo, SQL es un lenguaje, NoSQL es un grupo de lenguajes que se usan en bases de datos no relacionales, pero no son exactamente lo mismo.

No podemos hablar de rendimiento de lenguajes, podemos hablar del rendimiento de las bases de datos, por ejemplo, podemos comparar Redis (un tipo de base de datos NoSQL) y OracleDB (un tipo de base de datos SQL), ¿cuál de los dos es más rápido? ¿Cuál de los dos es mejor?

¿Más rápido para qué?

Cuando hablamos de rendimiento, por lo tanto tenemos que hablar de los distintos tipos de funciones que tenemos en una base de datos, para resumirlo, lo más importante que hacemos en una base de datos es guardar datos y recuperar información de ella, por lo tanto, estos dos son los valores clave que vamos a examinar.

¿Podemos comparar el rendimiento de dos bases SQL o dos bases NoSQL?

Obviamente, sí. Por ejemplo, OracleDB recupera información y guarda datos de forma más eficiente y más rápida que MySQL, aunque sean de la misma compañía. Hay bases de datos diseñadas específicamente para Big Data, como Teradata que tiene su propio appliance, por lo tanto está desarrollada de forma más efectiva para esta tarea que las bases de datos típicas.

Por otro lado, Redis puede ser la base de datos más rápida de todas, está diseñada para este propósito, y la base de datos se guarda en memoria. MongoDB está diseñada para guardar datos no relacionales, pero no funciona en memoria, por lo tanto, no es tan rápida como Redis.

Usando la base de datos correcta

Dependiendo de tus necesidades (y tus posibilidades económicas), podrías usar una base de datos u otra.

Por ejemplo, tu servidor seguramente se va a quedar sin memoria tratando de cargar Big Data en Redis, así que si tenés datasets muy grandes, probablemente necesites guardarlos en otra base de datos.

Siguiendo con las bases de datos NoSQL, Redis no tiene almacenamiento en disco por defecto, MongoDB sí, Redis solo permite entradas de tipo clave-valor, MongoDB guarda valores de tipo BSON (JSON Binario) con un máximo de 16MB, y te permite buscarlos por múltiples claves, Redis solo te va a dejar buscar por la clave.

Y de nuevo, yendo a las bases de datos relacionales, SQL Server tiene una sintaxis menos compleja que OracleDB, SQL Server te permite hacer un INSERT con una sentencia SELECT y OracleDB no. Los Job Schedulers y Triggers los maneja mejor OracleDB optimizando su rendimiento, SQL Server no lo optimiza. Además, OracleDB ejecuta consultas en paralelo mientras que SQL Server lo hace secuencialmente (esto hace que OracleDB tenga mejor rendimiento que SQL Server).

¿Entonces por qué la confusión?

En realidad, la confusión viene cuando tratás de comparar bases de datos optimizadas para ser rápidas versus bases de datos optimizadas para Guardar Datos.

Quizás la base de datos más rápida de todas sea Cassandra, pero no te va a servir si tratás de guardar en ella datasets muy grandes.

En la parte de SQL, quizás la más rápida sea RediSQL, pero de nuevo, seguro no te va a servir si tenés datasets muy grandes, ya que es una base de datos In-Memory y no tiene una interfaz de gestión.

Conclusión

En conclusión, podríamos decir que realmente deberías informarte sobre los beneficios y las debilidades de un motor de base de datos antes de implementarlo, ya sea una base de datos SQL o NoSQL. Aunque las soluciones NoSQL tienden a ser más rápidas, probablemente no sean adecuadas para tus necesidades.

Si querés saber más sobre la diferencia entre SQL y NoSQL te recomiendo el siguiente post.

Read in English