MongoDB: 1. ¿Qué es MongoDB? Ventajas y desventajas de MongoDB

Todo el contenido de este artículo se basa en la versión MongoDB4.2.


1. ¿Qué es MongoDB?

  MongoDB es una base de datos distribuida escalable, de código abierto, de estructura de tabla libre, orientada a documentos y de alto rendimiento, escrita en C++. Es más como una base de datos entre una base de datos relacional (RDBMS) y una base de datos no relacional (NoSQL).Es la base de datos no relacional con más funciones en la base de datos no relacional y la más similar a la base de datos relacional. La estructura de datos admitida por MongoDB es muy flexible y tiene un formato bson similar a json, que puede almacenar tipos de datos más complejos.

1. Conceptos en MongoDB

  Para facilitar la comprensión, la siguiente tabla compara Mysql con MongoDB. La tabla en Mysql corresponde al concepto de colección en MongoDB, y la fila en Mysql corresponde al concepto de documento en MongoDB. Los conceptos de base de datos e índice son consistentes con Mysql.

mysql mongodb
base de datos base de datos
mesa recopilación
fila documento
índice índice

2. Ventajas y desventajas de MongoDB

  Primero cite la primera oración del documento oficial:

Bienvenido al manual de MongoDB 4.2 MongoDB es una base de datos de documentos diseñada para facilitar el desarrollo y el escalado
Traducido al chino es: ¡
Bienvenido al manual de MongoDB 4.2! MongoDB es una base de datos de documentos diseñada para facilitar el desarrollo y el escalado.

Entonces, lo que MongoDB quiere proporcionar al comienzo de su diseño es una base de datos que pueda simplificar el desarrollo y admitir la expansión, y tiene las características de alto rendimiento y alta disponibilidad.

①Desarrollo simplificado: los datos se almacenan en documentos en forma de pares clave-valor similares a los archivos JSON. Este patrón de diseño tiene menos restricciones sobre los datos, y los documentos corresponden a tipos de datos nativos en muchos lenguajes de programación, lo cual es muy conveniente para el desarrollo.
②Extensibilidad: la expansión vertical tradicional se limita al rendimiento de un solo servidor. El modo de fragmentación de MongoDB admite la expansión horizontal y la base de datos se puede expandir aumentando la cantidad de servidores.
③Alto rendimiento: con el motor de almacenamiento WiredTiger, los datos se escriben en la memoria inmediatamente y la operación de persistencia en el disco duro se completa de forma asíncrona en segundo plano. Al mismo tiempo, la separación de lectura y escritura del conjunto de réplicas y el modo de escritura múltiple del modo de fragmentación pueden mejorar el rendimiento en mayor medida.
④ Alta disponibilidad: el modo de conjunto de réplica sincronizará los datos en uno o más servidores de réplica, admite la conmutación por error automática y proporciona copias de seguridad redundantes de los datos, lo que mejora la disponibilidad de los datos y garantiza la seguridad de los datos.

  Aunque MongoDB tiene ventajas obvias e introdujo transacciones distribuidas en la versión 4.2, todavía no se recomienda usar MongDB para aplicaciones con fuertes requisitos transaccionales. Además, conectar diferentes tipos de datos en múltiples dimensiones diferentes es relacional. Tampoco se recomienda usar MongoDB por las cosas en las que la base de datos es buena.

Dos, las características de MongoDB

1. Modelo de documento anidado

   Los documentos de MongoDB (un documento en Mongo se puede imaginar como una parte de los datos de Mysql para una fácil comprensión) almacenan datos en un formato de par clave-valor similar a Json, que se llama Bson en Mongo. Y los documentos de MongoDB pueden incrustar la estructura del documento en campos o matrices en el documento, como se muestra en la figura a continuación.
inserte la descripción de la imagen aquí
   El modelo de documento anidado permite que las aplicaciones almacenen información relacionada en el mismo registro de la base de datos. Como resultado, las aplicaciones pueden realizar operaciones comunes con menos consultas y actualizaciones, lo que mejora el rendimiento. Y este modelo de datos desnormalizados facilita las operaciones atómicas al combinar todos los datos relacionados en un solo documento, en lugar de normalizar a través de múltiples documentos y colecciones.

2. Libertad de modo

   En una base de datos relacional, primero debemos declarar una estructura de tabla, y por defecto en MongoDB, los documentos en una colección (que puede entenderse como aproximadamente igual a las tablas en Mysql) no requieren tener los mismos campos, y los mismos campos son en diferentes documentos También puede haber diferentes tipos de datos en . Como se muestra a continuación, el primer dato es el nombre, la edad y el sexo, y el segundo dato es el sexo, la edad y la altura.

> db.test.insert({
    
    "name":"xiaoming","age":"18","sex":"男"});
WriteResult({
    
     "nInserted" : 1 })
> 
> db.test.insert({
    
    "name":"xiaohong","age":"16","height":"165"});
WriteResult({
    
     "nInserted" : 1 })

> 
> db.test.find()
{
    
     "_id" : ObjectId("62b49cda779f3b59142bb909"), "name" : "xiaoming", "age" : "18", "sex" : "男" }
{
    
     "_id" : ObjectId("62b49d25779f3b59142bb90a"), "name" : "xiaohong", "age" : "16", "height" : "165" }
> 

   A partir de la versión 3.2, MongoDB introduce reglas de validación específicas, es decir, la validación de datos se realiza de acuerdo con reglas de validación artificiales al insertar o actualizar. En la versión 3.6, se introdujeron las reglas de validación del modo Json.

3. Confiabilidad

   MongoDB admite el modo de conjunto de réplicas, lo que proporciona respaldo de datos en tiempo real y conmutación por error automática.
   El clúster de conjunto de réplicas más pequeño debe implementarse en tres servidores, a saber, el nodo principal (principal), el nodo secundario (secundario) y el nodo de arbitraje (árbitro). El nodo maestro sincronizará los datos con el nodo esclavo en tiempo real para realizar una copia de seguridad de los datos.Si el nodo maestro es anormal, el nodo esclavo se actualizará al nodo maestro para realizar una conmutación por error automática.
inserte la descripción de la imagen aquí

4. Escalabilidad

   Cuando se considera aumentar la carga en un sistema, es común pensar en la escala vertical o la escala horizontal. La expansión vertical significa agregar recursos como CPU, memoria y almacenamiento a un solo servidor. Este método de expansión desafía seriamente la limitación de hardware de un solo servidor y el costo de expansión es relativamente alto. La expansión horizontal significa aumentar la cantidad de servidores para aumentar la capacidad de carga del sistema. No está limitado por el hardware de un solo servidor. Varios servidores trabajan juntos, pero la operación es más complicada que la expansión vertical.
   El modo de fragmentación de MongoDB es una forma de distribuir datos en varias máquinas. Los patrones de fragmentación se pueden usar para admitir conjuntos de datos muy grandes y operaciones de alto rendimiento. Los componentes del modo de fragmentación se muestran en la siguiente figura.
inserte la descripción de la imagen aquí

5. Admite transacciones distribuidas

   Para situaciones en las que se requieren operaciones atómicas en varios documentos, MongoDB comenzó a admitir transacciones de documentos múltiples en modo de conjunto de réplicas en la versión 4.0, y la versión 4.2 comenzó a admitir transacciones en clústeres fragmentados, realizando transacciones distribuidas. Hasta ahora, MongoDB también puede lograr un reemplazo integral Uso de bases de datos relacionales. Al usar transacciones distribuidas, las transacciones se pueden usar en múltiples operaciones, colecciones, bases de datos, documentos y fragmentos.

6. Almacenamiento de archivos

   BSON limita un documento para almacenar hasta 16 MB de datos.Si nuestro archivo tiene menos de 16 MB, podemos convertir el archivo en datos binarios y almacenarlo en la colección como un documento. Al mismo tiempo, MongoDB también proporciona una especificación de archivo para almacenar y recuperar más de 16 MB, a saber, GridFS.
   GridFS divide los archivos en bloques y los guarda en varios documentos. De esta manera, no necesitamos cargar todo el archivo en la memoria cuando queremos leer parte de la información del archivo. Puede ser más eficiente que el sistema de archivos a nivel del sistema. cuando se enfrenta a archivos de gran tamaño. . GridFS se puede usar para almacenar no solo archivos de más de 16 MB, sino cualquier archivo, pero MongoDB recomienda que si todos los archivos que queremos almacenar están por debajo del límite de 16 MB, debemos dar prioridad a almacenar cada archivo en un solo documento en lugar de GridFS .


referencia

"Práctica y principios básicos de MongoDB"
Documento oficial de Mongodb de Guo Yuanwei: https://www.mongodb.com/docs/v4.2/

Supongo que te gusta

Origin blog.csdn.net/qq_16583855/article/details/125292258
Recomendado
Clasificación