sql >> Base de Datos >  >> NoSQL >> MongoDB

Comparación del rendimiento de MongoDB en nubes públicas:AWS, Azure y DigitalOcean

Entonces, antes de invertir mucho tiempo y energía en una nube en particular, es importante comprender las características generales de rendimiento de MongoDB en esa nube. Buscamos esta información y no la encontramos, así que decidimos recopilarla para usted como parte de nuestra serie de presentaciones.

La plataforma de referencia

Decidimos comparar AWS, Azure y DigitalOcean para esta prueba. Se eligieron dos conjuntos diferentes de configuraciones. La siguiente tabla resume las configuraciones de la máquina:

Proveedor Región ScaleGrid Medium*
(Núcleos/RAM/Disco/Prov IOPS)
ScaleGrid grande* (núcleos/RAM/disco/IOPS de prueba)
AWS Este de EE. UU. 1/3,75 GB/60 GB/300 2/7,5 GB/120 GB/500
Azul Este de EE. UU. 2/3,5 GB/60 GB/hasta 2000 4/7GB/120GB/hasta 4000
Océano Digital Nueva York 3 2/4 GB/25 GB/SSD** 4/8GB/35GB/SSD**

* Consulte aquí en "MongoDB Hosting" para configuraciones detalladas de la máquina.
** DigitalOcean tiene SSD conectados directamente.

Las pruebas comparativas de rendimiento se ejecutaron con YCSB Workload A (carga de trabajo pesada de actualización). Hablamos sobre YCSB, su configuración y sus cargas de trabajo en una publicación muy detallada el mes pasado.

  1. Todas las pruebas comparativas se realizaron en una configuración independiente
  2. Para ambas configuraciones, Se insertaron 5 millones de registros con varios niveles de carga del servidor (según la cantidad de subprocesos del cliente).
  3. Para la configuración Media, la Carga de trabajo A se ejecutó con valores predeterminados (50 % de actualización, 50 % de lectura) con un recuento de operaciones de 5 millones  en varios niveles de carga del servidor.
  4. Para la configuración grande, la carga de trabajo A se ejecutó con valores predeterminados (50 % de actualización, 50 % de lectura) con un recuento de operaciones de 10 millones en varios niveles de carga del servidor.

Resultados

Discutiremos los resultados en función del rendimiento de inserción y las características de rendimiento/latencia bajo una gran carga de trabajo de actualización.

Insertar rendimiento

Instancias medianas

Las características de rendimiento/latencia para la inserción de registros de 5 millones en la configuración media:

Instancias grandes

Las características de rendimiento/latencia para la inserción de registros de 5 millones en la configuración grande:

Actualizar rendimiento

Instancias medianas

Las características de rendimiento/latencia para 5 millones de operaciones de escritura/actualización en la configuración del medio:

La prueba se ejecutó con 32 subprocesos solo para DigitalOcean. AWS y Azure eran revestimientos planos en 16 subprocesos. Sin embargo, DigitalOcean da la impresión de escalar linealmente hasta 32 subprocesos.

Instancias grandes

Las características de rendimiento/latencia para 10 millones de operaciones de escritura/actualización en la configuración grande:

Análisis general

  1. Como era de esperar, MongoDB en DigitalOcean tiene características consistentes de alto rendimiento/baja latencia en todo momento y supera a los demás durante la fase de inserción, extrayendo el máximo jugo de sus unidades SSD locales. Curiosamente, aunque funciona muy bien durante la fase de lectura/actualización, otros proveedores le dan bastante competencia, especialmente cuando aumenta la carga del servidor. Claramente, AWS/Azure están utilizando un almacenamiento en red de rendimiento mucho mayor.
  2. Para obtener un mejor rendimiento del disco de AWS, el usuario puede usar tamaños de disco más grandes o asignar más IOPS aprovisionadas.
  3. En instancias medianas, MongoDB en Azure parece funcionar mucho mejor que AWS de manera constante, tanto durante la fase de inserción como de actualización/lectura. Esto fue sorprendente. El hardware está bastante igualado. En instancias grandes, el rendimiento de AWS es notablemente mejor que el de Azure.
  4. Tanto AWS como Azure se degradan bastante bien en latencias a medida que aumenta la carga. Azure parece tener una curva de degradación de latencia bastante buena.
  5. Otro aspecto interesante del rendimiento de MongoDB en AWS es lo "plano" que es:parece degradarse con gracia incluso en una escala logarítmica.
  6. Según los números de latencia, parece que el punto ideal, desde el punto de vista de la carga, para instancias medianas y grandes es de 8 y 16 subprocesos, respectivamente.