MongoDB es una base de datos orientada a documentos de código abierto que está diseñada para almacenar una gran escala de datos y también le permite trabajar con esos datos de manera muy eficiente. Se clasifica en la base de datos NoSQL (No solo SQL) porque el almacenamiento y la recuperación de datos en MongoDB no se realizan en forma de tablas.
La base de datos MongoDB es desarrollada y administrada por MongoDB.Inc bajo SSPL (Licencia pública del lado del servidor) y se lanzó inicialmente en febrero de 2009. También brinda soporte de controlador oficial para todos los lenguajes populares como C, C++, C# y .Net, Go, Java, Node.js, Perl, PHP, Python, Motor, Ruby, Scala, Swift, Mongoid. Entonces, puedes crear una aplicación usando cualquiera de estos lenguajes. Hoy en día hay tantas empresas que utilizan MongoDB como Facebook, Nokia, eBay, Adobe, Google, etc. para almacenar su gran cantidad de datos.
Cómo funciona ?
Ahora, veremos cómo suceden realmente las cosas detrás de escena. Como sabemos, MongoDB es un servidor de base de datos y los datos se almacenan en estas bases de datos. O, en otras palabras, el entorno MongoDB le brinda un servidor que puede iniciar y luego crear varias bases de datos usando MongoDB.
Debido a su base de datos NoSQL, los datos se almacenan en las colecciones y documentos. Por lo tanto, la base de datos, la colección y los documentos están relacionados entre sí como se muestra a continuación:
- La base de datos MongoDB contiene colecciones al igual que la base de datos MYSQL contiene tablas. Se le permite crear múltiples bases de datos y múltiples colecciones.
- Ahora dentro de la colección tenemos documentos. Estos documentos contienen los datos que queremos almacenar en la base de datos MongoDB y una sola colección puede contener varios documentos y no tiene esquema, lo que significa que no es necesario que un documento sea similar a otro.
- Los documentos se crean utilizando los campos. Los campos son pares clave-valor en los documentos, son como columnas en la base de datos de relaciones. El valor de los campos puede ser de cualquier tipo de datos BSON como doble, string, booleano, etc.
- Los datos almacenados en MongoDB están en formato de documentos BSON. Aquí, BSON significa Representación binaria de documentos JSON. O, en otras palabras, en el backend, el servidor MongoDB convierte los datos JSON en un formato binario que se conoce como BSON y este BSON se almacena y consulta de manera más eficiente.
- En los documentos de MongoDB, puede almacenar datos anidados. Este anidamiento de datos le permite crear relaciones complejas entre datos y almacenarlos en el mismo documento, lo que hace que el trabajo y la obtención de datos sean extremadamente eficientes en comparación con SQL. En SQL, debe escribir uniones complejas para obtener los datos de la tabla 1 y la tabla 2. El tamaño máximo del documento BSON es de 16 MB.
NOTA: En el servidor MongoDB, puede ejecutar varias bases de datos.
Por ejemplo, tenemos una base de datos llamada GeeksforGeeks. Dentro de esta base de datos, tenemos dos colecciones y en estas colecciones tenemos dos documentos. Y en estos documentos almacenamos nuestros datos en forma de campos. Como se muestra en la siguiente imagen:
¿En qué se diferencia mongoDB de RDBMS?
Algunas diferencias importantes entre MongoDB y RDBMS son las siguientes:
MongoDB | RDBMS |
---|---|
Es una base de datos no relacional y orientada a documentos. | Es una base de datos relacional. |
Es adecuado para el almacenamiento jerárquico de datos. | No es adecuado para el almacenamiento de datos jerárquicos. |
Tiene un esquema dinámico. | Tiene un esquema predefinido. |
Se centra en el teorema CAP (coherencia, disponibilidad y tolerancia de partición). | Se centra en las propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad). |
En términos de rendimiento, es mucho más rápido que RDBMS. | En términos de rendimiento, es más lento que MongoDB. |
Características de MongoDB –
- Base de datos sin esquema: es la gran característica proporcionada por MongoDB. Una base de datos sin esquema significa que una colección puede contener diferentes tipos de documentos. O, en otras palabras, en la base de datos MongoDB, una sola colección puede contener varios documentos y estos documentos pueden consistir en diferentes números de campos, contenido y tamaño. No es necesario que un documento sea similar a otro documento como en las bases de datos relacionales. Debido a esta interesante función, MongoDB proporciona una gran flexibilidad a las bases de datos.
- Orientado a documentos: en MongoDB, todos los datos almacenados en los documentos en lugar de tablas como en RDBMS. En estos documentos, los datos se almacenan en campos (par clave-valor) en lugar de filas y columnas, lo que hace que los datos sean mucho más flexibles en comparación con RDBMS. Y cada documento contiene su ID de objeto único.
- Indexación: en la base de datos MongoDB, cada campo en los documentos está indexado con índices primarios y secundarios, lo que facilita y toma menos tiempo para obtener o buscar datos del conjunto de datos. Si los datos no están indexados, la base de datos busca cada documento con la consulta especificada, lo que lleva mucho tiempo y no es tan eficiente.
- Escalabilidad: MongoDB proporciona escalabilidad horizontal con la ayuda de fragmentación. Sharding significa distribuir datos en múltiples servidores, aquí una gran cantidad de datos se divide en fragmentos de datos utilizando la clave de fragmento, y estos fragmentos de datos se distribuyen uniformemente entre fragmentos que residen en muchos servidores físicos. También agregará nuevas máquinas a una base de datos en ejecución.
- Replicación: MongoDB proporciona alta disponibilidad y redundancia con la ayuda de la replicación, crea múltiples copias de los datos y envía estas copias a un servidor diferente para que, si un servidor falla, los datos se recuperen de otro servidor.
- Agregación: Permite realizar operaciones sobre los datos agrupados y obtener un único resultado o resultado computado. Es similar a la cláusula SQL GROUPBY. Proporciona tres agregaciones diferentes, es decir, tubería de agregación, función de reducción de mapa y métodos de agregación de propósito único.
- Alto rendimiento: el rendimiento de MongoDB es muy alto y la persistencia de datos en comparación con otra base de datos debido a sus características como escalabilidad, indexación, replicación, etc.
Ventajas de MongoDB:
- Es una base de datos NoSQL sin esquema. No necesita diseñar el esquema de la base de datos cuando trabaja con MongoDB.
- No es compatible con la operación de combinación.
- Aporta gran flexibilidad a los campos de los documentos.
- Contiene datos heterogéneos.
- Proporciona alto rendimiento, disponibilidad, escalabilidad.
- Es compatible con Geoespacial de manera eficiente.
- Es una base de datos orientada a documentos y los datos se almacenan en documentos BSON.
- También es compatible con la transición ACID de múltiples documentos (string de MongoDB 4.0).
- No requiere ninguna inyección de SQL.
- Se integra fácilmente con Big Data Hadoop
Desventajas de MongoDB:
- Utiliza mucha memoria para el almacenamiento de datos.
- No está permitido almacenar más de 16 MB de datos en los documentos.
- El anidamiento de datos en BSON también está limitado, no está permitido anidar datos en más de 100 niveles.
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA