MySQL vs MongoDB. Tomando decisiones

logo_gpsCada vez es más común realizar trabajos de integración, migración o explotación de distintos entornos de base de datos. La migración de un motor de base de datos a otro es un proceso que requiere atención y cuidado. Independientemente de la razón que nos lleve al cambio, unas veces por mejorar el rendimiento, otras por cambios en el modelo datos, nueva arquitectura, funcionalidades, demandas y o mayor manejo de datos, será siempre una decisión difícil de tomar. Por esa razón es importante conocer donde son estas bases de datos más eficientes y competitivas, de cara a buscar un ecosistema donde nuestro aplicativo y sus usuarios van a encontrarse más a gusto.
Vamos a exponer hoy algunas de las consideraciones a tener en cuenta a la hora de migrar o elegir entre MongoDB y MySQL, como base de datos para nuestro desarrollo. 

  • Si se tiene un gran número de registros. MongoDB es muy rápido en lecturas de millones de registros, por lo que puede ser muy útil para análisis de datos, pero cuidado, si se realizan operaciones como media, suma,etc, a priori es más rápido en este tipo de operaciones MySQL.
  • Si no es necesario que los datos tengan la misma estructura. En el caso de un formulario web por ejemplo o una ficha de datos de un cliente, en una base de datos relacional como MySQL, Oracle, SQL Server, etc., habrá una tabla con una estructura definida en la que muchos campos tendrán el valor de null, ocupando un espacio innecesario. Con MongoDB, si se desea, pueden omitirse la introducción de esos datos. Puede darse el caso con MongoDB de que tengamos en una colección (equivalente a una tabla) de ficha de clientes, un cliente sólo con nombre y apellidos y otro cliente con el nombre y el email por ejemplo, ahorrando en espacio y velocidad.
  • Pensado para aplicaciones web. Ambas bases de datos suelen ser tenidas en cuenta muy a menudo para aplicaciones web. Aunque MySQL actualmente sigue siendo la base de datos más usada para páginas web por su gran velocidad de lectura comparado con otras bases de datos.En cambio MongoDB está empezando a ser importante en nuevos desarrollos de aplicaciones web por su fácil integración con AngularJS y NodeJS. Esto es debido a que devuelve los datos en formato JSON.
  • ¿Por qué no combinarlos? Una buena opción es aprovechar ambas bases de datos, teniendo por ejemplo una base de datos con WordPress (basado en PHP y MySQL) con un formulario que guarde los datos en una colección de MongoDB. Estos datos podrían posteriormente ser analizados o gestionados por una aplicación interna creada en NodeJS, MongoDB y AngularJS.

Hay que tener en cuenta también los siguientes aspectos:

  • No existen los «join» debido a que no tiene una estructura definida, no hay tablas con campos definidos, son colecciones (tablas) con documentos (filas) sin estructura definida. Es un concepto diferente a las bases de datos relacionales, es una BBDD «NoSQL».
  • No tiene integridad referencial de datos. La validación de los datos se hace en la parte de desarrollo, ya sea con NodeJS, PHP, JavaScript…Es en esta parte donde se hacen las validaciones antes de insertar los datos, ahorrando así mucha carga de trabajo a la base de datos.
  • No hay transacciones, lo que en determinados casos puede decantar la balanza hacia MySQL.

En la siguiente entrada os explicaremos cómo migrar de MySQL a MongoDB mediante CSV.

Esperamos que esta entrada os haya sido de utilidad.

Un saludo,

Equipo de base de datos