Comparativa MongoDB vs MySQL: Conclusiones

Publicado
Comentarios7

La batería de tests de carga que se han hecho han sido:

Para que los tests fueran completos habría que probar con una arquitectura de varias máquinas con sharding, pero eso queda para más adelante

Las conclusiones a las que podemos llegar por el momento con los datos que tenemos son:

En escritura

  • MongoDB es más rápido en las operaciones de escritura
  • Para operaciones de escritura sencillas es entre 2 y 4 veces más rápido. Para un número de escrituras elevado (el tests de la escritura de 30 millones de registros de acceso, por ejemplo) MongoDB duplica en rendimiento a MySQL
  • En escrituras concurrentes MongoDB es más rápido (15% y 30% en nuestras pruebas)

En lectura

  • MongoDB es más rápido en las operaciones de lectura
  • En lecturas concurrentes MongoDB es más rápido (15% y 40% en nuestras pruebas)

Funciones de agregación

  • Aquí MySQL supera ampliamente a MongoDB. MySQL es mucho más rápido en la agregación de datos, entre 3 y 6 veces más rápido para las 4 pruebas que hemos hecho

MongoDB es más escalable, lo que significa que cuando la carga de usuarios aumenta el tiempo de respuesta se mantiene estable.

En resumen, y como era de esperar, para aquellos problemas en los que las operaciones de lectura y escritura se hagan de forma intensiva, las relaciones entre los datos no sean lo más importante y el rendimiento de las funciones de agregación no sea crítico MongoDB es una opción mejor que MySQL.

Ver también

El resto de esta serie de artículos


Etiquetas: , ,

Comentarios

  1. jefferson jair arcos#

    hola, he estudiado mucho tu investigacion pero quisiera porfavor me digas con que metodos obtuviste el tiempo que tarda mysql y mongo en realizar las operaciones, de antemano muchas gracias

  2. Ciges#

    Hola, Jefferson,

    Para las pruebas que no son multiusuario hice un script en PHP (y alguno en JavaScript) y medí su tiempo de ejecución con el comando Linux “time”. Lo ejecuté varias veces para descartar valores anormales y los tiempos mostrados es la mediana de varios de ellos para cada prueba.

    Para los tests multiusuario el script PHP correspondiente se puso disponible a través de un servidor web y luego se lanzaron los tests simulando accesos simultáneos de hasta 50 usuarios con Apache JMeter 2

    Aparte de en la documentación está explicado cómo lanzar los tests con más detalle en el repositorio Github con el código desarrollado.

    Un saludo

  3. Juan#

    Antes de nada enhorabuena por el trabajo, es muy completo. Estoy interesado justamente en las operaciones de agregación, ¿sabes si hay alguna variante que optimice este tipo de operaciones? Me interesa un sistema NoSQL que haga este tipo de operaciones en un tiempo “decente”…

  4. Ciges#

    Ummmm …

    Así de memoria lo que si es fundamental es escojer bien los pasos a realizar haciendo en primer lugar los filtrados de datos.

    Antes de agrupar o hacer otras operaciones hay que tratar de quedarse sólo con los documentos que necesitemos (operaciones $match) para minimizar el tráfico de datos entre las distintas operaciones (con el framework de agregación se van encadenando unas operaciones detrás de otras).

    Además esto es fundamental si las operaciones se hacen de forma distribuída (usando varias máquinas en sharding) ya que las operaciones se hacen en las distintas máquinas y el resultado de algunas operaciones intermedias (de un $group por ejemplo) no debe de superar los 16M ya para la comuniación entre las distinas máquinas hay el mismo límite que para el tamaño de los documentos en MongoDB. De hecho si ésto no es posible habrá que utilizar Map Reduce.

  5. Wilberth Loría#

    Hola! Muchas gracias por su trabajo. Junto a otro que vi por ahí, nos aclaran muchas inquietudes con respecto a este nuevo software. Seguiré investigando.

  6. Ciges#

    De nada, encantando de que te sirva Wilberth

  7. Juan Carlos#

    Hola,

    Gracias por tu comparación. Por ahora estoy por entrar a un proyecto de investigación y quería tener nociones sobre el benchmark de diferentes bases de datos y con tus comparaciones me has ayudado

    gracias y saludos

Añadir comentarios ...

Escribe debajo tu comentario. Los campos marcados con * son obligatorios. Tienes que previsualizar tu comentario antes de enviarlo definitivamente.