Home Ciencia y Tecnología Scylladb vs. MongoDB: cómo optimiza numeramente NoSQL para el rendimiento y la...

Scylladb vs. MongoDB: cómo optimiza numeramente NoSQL para el rendimiento y la flexibilidad

37
0

Numery ha estado utilizando SCYLLADB y MongoDB en producción durante más de 5 años. Aprenda en qué base de datos NoSQL confían para diferentes casos de uso y por qué.

Dentro del dominio NoSQL, ScylladB y MongoDB son dos animales totalmente diferentes. MongoDB no necesita introducción. Su easy adopción y su extensa comunidad/ecosistema lo han convertido en el estándar de facto para comenzar con NoSQL y impulsar innumerables aplicaciones internet. La arquitectura cercana a la steel de Scylladb permite una latencia predecible de baja alto rendimiento. Esto está impulsando un aumento de la adopción entre equipos como Discord, Tractian y muchos otros que están ampliando aplicaciones intensivas en datos y golpeando el muro con sus bases de datos existentes.

Pero las migraciones de bases de datos no son el foco aquí. En cambio, veamos cómo estas dos bases de datos claramente diferentes podrían coexistir dentro de la misma pila tecnológica: cómo son fundamentalmente diferentes y los mejores casos de uso para cada uno. Al igual que los diferentes zapatos funcionan mejor para ejecutar un maratón versus escalador de monte Everest frente a asistir a su boda, diferentes bases de datos funcionan mejor para diferentes casos de uso con diferentes cargas de trabajo y expectativas de latencia/rendimiento.

Entonces, ¿cuándo debería usar Scylladb vs. MongoDB y por qué? En lugar de proporcionar la perspectiva del proveedor, vamos a compartir las concepts de un entusiasta de código abierto que tiene una amplia experiencia utilizando scylladb y MongoDB en producción: Alexys Jacob, el CTO de Numberly. Alexys compartió su perspectiva en Scylladb Summit 2019, y el video ha estado en tendencia desde entonces.

https://www.youtube.com/watch?v=ch1vrqbixti

Aquí hay tres conclusiones clave de su charla tecnológica detallada:

La escala de escritura es más compleja en MongoDB

La unidad base de una topología MongoDB se llama conjunto de réplica, que se compone de un nodo primario y generalmente múltiples nodos secundarios (piense en réplicas calientes). Solo el nodo primario puede escribir datos. Después de maximizar la escala de escritura vertical en MongoDB, su única opción para escalar las escrituras se convierte en lo que se llama un clúster fragmentado. Esto requiere agregar nuevos conjuntos de réplicas porque no puede tener múltiples primarias en un solo conjunto de réplicas.

El fragmento de datos en los conjuntos de réplicas de MongoDB requiere el uso de una clave especial para especificar de qué datos es responsable cada conjunto de réplica, así como crear un conjunto de réplica de metadatos que rastree qué corte de datos vive en cada réplica (el triángulo azul en el diagrama a continuación). Además, los clientes que se conectan a un clúster MongoDB necesitan ayuda para determinar qué nodo abordar. Es por eso que también necesita implementar y mantener las instancias de enrutador inteligente de MongoDB (representadas por los rectángulos en la parte superior del diagrama) conectadas a los conjuntos de réplicas.

La complejidad de la escala escribe en MongoDB

Tener todos estos nodos conduce a mayores costos operativos y de mantenimiento, así como recursos desperdiciados, ya que no se puede aprovechar el IO de los nodos de réplica para las escrituras, lo que hace que los grupos de mongodb fragmentados sean el peor enemigo de su costo whole de propiedad como Alexys señaló.

Para ScylladB, Screing escribe es mucho más easy. Él explicó: “En el lado de Scylladb, si quieres agregar más rendimiento, solo agregas nodos. Fin de la historia”.

La simplicidad de la escala escribe en scylladbLa simplicidad de la escala escribe en scylladb

Alexys ató este hilo de escala:

“Evite crear grupos de MongoDB, ¡por favor! Podría escribir un libro con historias de guerra sobre este mismo tema. La razón principal por la cual es el hecho de que MongoDB no une la carga de trabajo a las CPU. No es pure porque no se basa en el hashing consistente.

MongoDB favorece la flexibilidad sobre el rendimiento, mientras que ScylladB favorece el rendimiento constante sobre la versatilidad

Scylladb y MongoDB tienen prioridades claramente diferentes cuando se trata de flexibilidad y rendimiento.

En el frente de modelado de datos, MongoDB es appropriate con consultas geoespaciales, búsqueda de texto, tuberías de agregación, consultas de gráficos y transmisiones de cambio. Aunque ScylLADB, un almacén de columna amplia (también conocida como valor clave de tecla), admite tipos, mostradores y transacciones ligeras definidas por el usuario, las opciones de modelado de datos están más restringidas que en MongoDB. Alexys señaló: “Desde una perspectiva de desarrollo, interactuar con un objeto JSON se siente más pure que interactuar con una fila”. Además, mientras MongoDB ofrece el opción de hacer cumplir la validación del esquema antes de la inserción de datos, Scylladb requerimiento Esos datos se adhieren al esquema definido.

La consulta también es más easy con MongoDB ya que solo estás filtrando e interactuando con JSON. También es más versatile, para bien o para mal. MongoDB le permite emitir cualquier tipo de consulta, incluidas consultas que causan un rendimiento subóptimo con su carga de trabajo de producción. Scylladb no lo permitirá. Si lo intentas, Scylladb te advertirá. Si determine proceder bajo su propio riesgo, puede ingresar a un calificador que indica que realmente comprende en qué se está metiendo.

Modelado de datos MongoDBModelado de datos MongoDB

Modelado de datos scylladbModelado de datos scylladb

Alexys resumió las diferencias clave desde una perspectiva de desarrollo:

“MongoDB favors flexibility over efficiency. It is simple to work together with and it’ll not get in your manner. However it’s going to have impacts on efficiency – impacts which can be effective for some workloads, however unacceptable for others. Then again, ScyllaDB favors constant efficiency over versatility. It seems a bit extra fastened and a bit extra inflexible on the surface. However as soon as once more, that is on your personal good so you may have constant efficiency, function effectively and work together Bueno, con el sistema.

Es importante tener en cuenta que incluso las consultas que siguen las mejores prácticas de rendimiento se comportarán de manera diferente en MongoDB que en ScylladB. No importa cuán cuidadoso sea, no superará la sanción de rendimiento que se deriva de las diferencias arquitectónicas fundamentales.

Juntos, Scylladb y MongoDB son un gran combo Nosql

“No es un partido de muerte; somos felices usuarios de MongoDB y Scylladb”, continuó Alexys.

Selecciona numeridad la mejor base de datos para los requisitos técnicos de cada caso de uso.

En número, MongoDB se usa para dos tipos de casos de uso:

  • Backends internet con API REST y posiblemente esquemas flexibles.
  • Consultas en tiempo actual sobre datos de comportamiento impredecibles.

Por ejemplo, algunas de las aplicaciones de Numberly se inundan con datos de seguimiento internet que sus clientes recopilan y envían (cada cliente con sus propias aplicaciones desarrolladas internamente). Numinly no tiene una forma de imponer un esquema estricto en esos datos, pero debe ser capaz de consultarlo y procesarlo. En palabras de Alexys, “MongoDB está bien aquí; su flexibilidad es ventajosa porque nos permite simplemente almacenar los datos en algún lugar y consultarlos fácilmente”.

ScylLADB se usa para tres tipos de casos de uso en Numerly:

  • Tuberías de datos sensibles a la latencia en tiempo actual. Esto implica una gran cantidad de enriquecimiento de datos, donde hay múltiples fuentes de datos que deben correlacionarse, en tiempo actual, en las tuberías de datos. Según Alexys, “Eso es difícil de hacer … y necesitas fuertes garantías de latencia para no romper los SLA [service-level agreements] de las aplicaciones y procesos de datos en los que sus clientes confían en la tubería “.
  • Lotes mixtos y cargas de trabajo en tiempo actual. Numerly también mezcla muchas cargas de trabajo por lotes y en tiempo actual en Scylladb porque proporciona lo mejor de ambos mundos (como se comparte numeramente anteriormente). “Teníamos colmena en un camino y mongodb en el otro. Pusimos todo en Scylladb y sus cargas de trabajo por lotes similares a Hadoop y cargas de trabajo de tuberías en tiempo actual”.
  • Backends internet usando GraphQL, que impone un esquema estricto. Algunos de los backends internet de Numberly se implementan en GraphQL. Cuando se trabaja con API basadas en esquemas, tiene mucho sentido tener una base de datos basada en esquemas con baja latencia y alta disponibilidad.

Alexys concluyó: “Muchos de nuestros ingenieros de backend, y los ingenieros frontend también están adoptando Scylladb. Vemos una tendencia de personas que adoptan Scylladb, cada vez más personas tecnológicas preguntan ‘Tengo este caso de uso, ¿ScylladB sería un buen ajuste?’ La mayoría de las veces, la respuesta es ‘sí’. Entonces, la adopción de SCYLLADB está creciendo.

Bonificación: Más concepts de Alexys Jacob

Alexys es un contribuyente extremadamente generoso a las comunidades de código abierto, con respecto a las conversaciones de código y conferencia. Vea más de sus contribuciones en https://ultrabug.fr/

Acerca de Cynthia Dunlop

Cynthia es directora senior de estrategia de contenido en Scylladb. Ella ha estado escribiendo sobre desarrollo de software program e ingeniería de calidad durante más de 20 años.

fuente

LEAVE A REPLY

Please enter your comment!
Please enter your name here