español - ¿Por qué es MongoDB tan rápido?
mongodb español (9)
Como se ha mencionado, MongoDB no se crea y no se debe usar igual que una base de datos SQL. SQL (y otros datos relacionales) almacenan datos relacionales , es decir que los datos en la tabla X pueden configurarse para tener relaciones directas con la información en la tabla Y. MongoDB no tiene esta capacidad y, por lo tanto, puede reducir una gran cantidad de sobrecarga. De ahí que MongoDB se use generalmente para almacenar listas, no relaciones.
Agregue el hecho de que aún no es completamente compatible con ACID (aunque ha dado grandes pasos desde que se introdujo por primera vez) y esa es la mayor parte de las diferencias de velocidad.
Estas son las diferencias delineadas en el sitio real entre un modelo transaccional completo y su modelo.
En la práctica, el modelo no transaccional de MongoDB tiene las siguientes implicaciones:
- Sin retrocesos . Tu código debe funcionar sin retrocesos. Verifique todas las condiciones programáticas antes de realizar la primera operación de escritura de la base de datos. Ordene sus operaciones de escritura de modo que la operación más importante ocurra la última.
- Bloqueo explícito . Su código puede bloquear objetos explícitamente al realizar operaciones. Por lo tanto, el programador de aplicaciones tiene la capacidad de garantizar la "serialización" cuando sea necesario. La funcionalidad de bloqueo estará disponible en la versión tardía alpha / early beta de MongoDB.
- Comprobación de la base de datos al inicio . Si la base de datos anormal termina (rara), un procedimiento de verificación de la base de datos se ejecutará automáticamente al inicio (similar a fschk).
Estaba mostrando los puntos de referencia de rendimiento de mi compañero de trabajo de MongoDB vs SQL 2008 y, aunque él cree que MongoDB es más rápido, no entiende cómo es posible. Su lógica, es que SQL ha existido durante décadas, y tiene algunas de las personas más inteligentes que trabajan en él, y cómo puede MongoDB; un niño relativamente nuevo en el bloque es tan superior en rendimiento? No pude proporcionar una respuesta sólida y técnica, y esperaba que ustedes pudieran ayudar.
Mongo no cumple con ACID, por lo que no tiene que lidiar con casi tanto "cruft" para asegurarse de que lo que intente poner en la base de datos pueda volver a aparecer más adelante.
Si no te importa perder alguna funcionalidad y posiblemente perder datos a cambio de velocidad, entonces Mongo es bueno. Si necesita garantizar la integridad de los datos y / o tiene requisitos complejos para unirse, entonces evite los sistemas tipo Mongo como la plaga.
MongoDB no es como una base de datos relacional tradicional. No está basado en SQL o documentos, proporciona garantías de coherencia débiles y no tiene que garantizar la coherencia como SQL.
MongoDb es más rápido porque: 1. No hay transacciones; 2. Sin relaciones entre tablas;
Si va a intentar hacer exactamente la misma lógica en el servidor SQL, por ejemplo: 1. No use Seleccionar con bloqueos; 2. Sin relaciones entre tablas; No será tan grande la brecha de velocidad entre SQL Server y MongoDB. Solo un lugar definitivamente será más rápido, escribirá y actualizará registros, porque SQL hace insertar y actualizar la tabla en la cola y en una transacción, en MondoDB sucede de forma asíncrona. En mis proyecciones, no pude obtener grandes diferencias de velocidad entre SQL SERVER y MongoDB, ya que la lógica de negocios era muy similar entre 2 proyectos. Ganancia de velocidad real en MongoDb puede obtener proyectos analíticos con datos de oferta, o en grandes motores de gestión de contenido, como periódicos, tiendas en línea y etc. Nuevamente, ninguna optimización en MongoDB y una buena optimización en SQL Server pueden hacer que estas bases de datos sean casi iguales.
SQL tiene que hacer bastante, Mongo solo tiene que soltar bits en el disco (casi)
También agregaré que otra diferencia es menos acerca de la velocidad y más sobre la conceptualización (aunque creo que podría ayudar con la velocidad porque hay menos espacio para unir problemas) es que el almacenamiento basado en documentos es muy similar al modo de pensar orientado a objetos .
El documento basado puede no ser perfectamente ACID, pero creo que MongoDB es más fácil obtener lo que quieres simplemente obteniendo todo el documento en lugar de jugar con todas las combinaciones de una base de datos SQL, arriesgando algunas malas combinaciones también.
Disculpas a cualquier fanático de SQL.
MongoDB es rápido porque su escala web!
Es un video divertido y vale la pena que todos lo vean, pero responde su pregunta: la mayoría de los motores noSQL como MongoDB no son robustos ni resistentes a fallas u otras interrupciones. Esta seguridad es lo que sacrifican para ganar velocidad.
MongoDB es rápido porque:
- No ACID y disponibilidad tienen preferencia sobre la consistencia.
- Inserción y actualización asincrónica: lo que significa es que MongoDB no inserta datos en DB tan pronto como se procesa la consulta de inserción. Lo mismo es cierto para las actualizaciones.
- No se une a la sobrecarga: cuando dicen que MongoDB es una base de datos documental, lo que quieren decir es una base de datos que contiene datos que son autosuficientes y toda la información está integrada como un documento real.
Mientras que las otras respuestas son interesantes, agregaría que una de las razones por las que MongoDB es "tan rápido", al menos en los puntos de referencia, es la write concern
.
Puede leer más sobre las diferentes preocupaciones de escritura here pero básicamente puede definir el nivel de "seguridad" que desea cuando escribe datos.
El nivel predeterminado solía unacknowledged
estar unacknowledged
, lo que significa que la operación de escritura se acaba de activar, pero el controlador no verifica si se ejecutó correctamente. Es más rápido, pero mucho menos confiable.
Lo cambiaron hace aproximadamente un año para acknowledged
. Pero creo que la mayoría de los puntos de referencia todavía usan el modo "no reconocido" para obtener mejores resultados.
Si desea ver la diferencia en el plazo de ejecución, puede consultar este artículo (un poco viejo pero todavía da una idea).