Investigación de sobre los conceptos que se deben de tratar en Mongo DB
1. MongoDB: Una Base de Datos Orientada a Documentos con Alto Rendimiento y Escalabilidad
Autores: Cristian Villa, Jeison Quemag,Brayan Riacos y Danilo Casanova
Programa de Ingeniería en Sistemas
Universidad de Nariño
Ipiales_Nariño
RESUMEN
MongoDB es una base de datos orientada a documentos, que almacena la información en unidades
flexibles llamadas documentos. Estos pueden tener diferentes estructuras y se guardan en formatos como
JSON o BSON. MongoDB tiene características avanzadas como replicación, sharding, transacciones,
agregados y cambios de esquema.
Para diseñar modelos de datos en MongoDB, hay que elegir cómo representar las relaciones entre los
datos. Se pueden usar dos métodos: incrustación o referencias. La incrustación consiste en guardar los
datos relacionados en un mismo documento. Esto simplifica la recuperación y la manipulación de los
datos, pero puede aumentar el tamaño de los documentos y dificultar las consultas agregadas. Las
referencias consisten en guardar identificadores de otros documentos relacionados. Esto mantiene una
normalización más eficiente, pero requiere más consultas para acceder a los datos.
La elección entre incrustación o referencias depende de varios factores, como la cardinalidad de la
relación, la frecuencia de acceso y modificación de los datos, el tamaño de los documentos y las
necesidades de rendimiento. Por lo general, se recomienda la incrustación para relaciones uno-uno o uno-
pocos con acceso frecuente a los datos asociados. Para relaciones uno-muchos o muchos-muchos, o
cuando los datos se acceden separadamente o son muy grandes, se recomiendan las referencias. Un
ejemplo de modelo de datos en MongoDB es el de una tienda online con clientes y pedidos. Con
incrustación, cada documento de clientes tendría un campo de pedidos con detalles imbricados. Con
referencias, cada documento de clientes tendría un campo con identificadores de documentos de pedidos
vinculados.
Palabras claves: Documentos, Incrustación, Referencias, Rendimiento, Cardinalidad.
ABSTRACT
This document describes the main features of MongoDB, one of the most popular NoSQL document-
oriented databases currently. It explains that data in MongoDB is stored as documents, which have a
flexible structure based on JSON/BSON objects. Additionally, it details some of MongoDB's key
functionalities like replication, sharding, transactions and indexes.
An important section is dedicated to modeling relationships between data in MongoDB, exposing
embedding and referencing as the main options. It explains that the choice of one model or the other
depends on factors like relationship cardinality, access frequency, document size and performance. As
an example, it develops a model to store customer and order information that illustrates both approaches.
2. Keywords: MongoDB,Database,NoSQL,Document-oriented,Modeling
1.Introduccion
El documento provee una descripción integral de MongoDB, la cual según Little (2017) es considerada
una de las bases de datos NoSQL orientadas a documentos más populares. Explora el origen y desarrollo
temprano de MongoDB, explicando que fue creada en 2007 por Dwight Merriman, Kevin Ryan y Eliot
Horowitz con el objetivo de superar las limitaciones de los sistemas de bases de datos tradicionales
(O'Reilly, 2021). Detalla que su primera versión fue lanzada oficialmente en 2009, permitiendo
almacenar datos en formato JSON y brindando un alto rendimiento de acceso (O'Reilly, 2021).
Asimismo, explica que durante la década de 2010 experimentó un rápido crecimiento al ser adoptada por
startups debido a sus capacidades de escalabilidad horizontal. Más adelante, en 2013 incorporó mejoras
en consulta y replicación. También señala que para la actualidad es ampliamente utilizada por miles de
compañías líderes a nivel global (Little, 2017). De igual forma, aborda su evolución como plataforma
completamente multi-nube.Del mismo modo, en tablas y secciones subsiguientes provee información
general sobre sus características clave, incluyendo los modelos de datos orientados a documentos,
lenguajes soportados y métodos de acceso .En suma, el documento realiza una introducción exhaustiva
a MongoDB que abarca desde sus orígenes y desarrollo temprano, hasta el alcance y funcionalidades que
ofrece en la actualidad; constituyéndose en una referencia integral sobre este popular sistema de base de
datos NoSQL.
MongoDB
Es una de las bases de datos no relacionales (NoSQL) orientadas a documentos más extendidas y
populares que existen. Con un concepto muy diferente al de las bases de datos relacionales, supone una
alternativa interesante y con multitud de ventajas que podemos aprovechar (escalabilidad, rapidez,
eficiencia con grandes cantidades de datos, etc.). Así, en lugar de guardar los datos en registros y tablas,
estos se almacenan en documentos BSON, que es una representación binaria del estándar JSON.
Historia de MongoDB
La creación de MongoDB se remonta al año 2007 por Dwight Merriman, Kevin Ryan y Eliot Horowitz
(O'Reilly, 2021). Estos desarrolladores buscaban crear una base de datos no relacional orientada a
documentos que superara las limitaciones de las bases de datos tradicionales (O'Reilly, 2021).
En 2009 se lanzó oficialmente la versión 1.0 de MongoDB, la cual almacenaba datos en formato JSON
brindando altas prestaciones de escritura y lectura (Little, 2017). Durante la década de 2010, experimentó
un rápido crecimiento al ser adoptada por startups debido a su escalabilidad horizontal (Little, 2017).
Posteriormente en el año 2011 recaudó 10 millones de dólares para acelerar su desarrollo, y de esta
manera superando el millón de descargas ese año (Packt, 2022). Pasamos al año 2013 con la versión 2.4
3. que introdujo mejoras de rendimiento y funcionalidades como consultas avanzadas y replicación (Packt,
2022).
Para entonces era ampliamente usada por miles de compañías (Little, 2017). En 2017 realizó un exitoso
IPO en el NASDAQ (O'Reilly, 2021).
Actualmente, MongoDB cuenta con miles de clientes como Target, eBay, HSBC y BMW; y continúa
agregando capacidades en la nube para satisfacer las necesidades cambiantes de los desarrolladores
(Little, 2017). Ha evolucionado desde un motor de base de datos orientado a documentos a una
plataforma completa multi-nube (O'Reilly, 2021).
Recomendaciones para MongoDB
Se recomienda ejecutar MongoDB en máquinas de 64 bits. El motivo principal es que los sistemas de 32
bits son capaces de direccionar solo 4 GB de memoria. Se tiene conocimiento que la gran mayoría de
veces, se utiliza la mitad de la memoria para el funcionamiento del sistema operativo y el funcionamiento
de este programa, razón por la cual queda muy poca memoria para la ejecución de los sistemas de
producción que necesitaran más recursos que estos, por lo cual es recomendable el uso de un sistema de
64 bits, ya que teóricamente arquitecturas de 64 bits pueden abordar hasta 16 exabytes de memoria, que
es ilimitada a todos los efectos.
Se considera importante resaltar lo siguiente:
Ejecutar MongoDB con replicación, especialmente si no lo ejecuta con el registro en diario
habilitado. Debido a que MongoDB utiliza archivos asignados en memoria, cualquier cierre
incorrecto de un sistema que MongoDB no se esté ejecutando con registro en diario puede
provocar daños. Por lo tanto, en este caso es necesario tener una copia de seguridad replicada
disponible para conmutación por error. ( Banker, K. (2011). MongoDB in Action, 1era edición,
p375.)
Un excelente consejo a aplicar al ejecutar MongoDB sin registro, aunque se podría aplicar para cualquier
otra base de datos en la que se quiera tener las precauciones necesarias.
HERRAMIENTAS GRÁFICAS PARA LA MANIPULACIÓN DE DATOS
Aunque no es necesario disponer de herramientas visuales para la gestión de bases de datos, sí que son
de gran utilidad puesto que hacen más intuitiva y eficiente la gestión de dichos datos (en el caso de bases
de datos NoSQL: manipulación de colecciones, documentos, operaciones de inserción, consultas,
actualizaciones, borrados, etc.). Por ello, es altamente recomendable la instalación de alguna de estas
herramientas que nos permitan gestionar y visualizar los datos de forma gráfica.
Los índices en MongoDB
Toda la información sobre los índices se encuentra almace- nada en la colección system.indexes. Esta
colección gestiona todos los índices que han sido creados en todas las colecciones, así como los campos
4. o elementos a los que hacen referencia. Se trata de una colección normal, por lo que puede operarse con
ella con los comandos habituales.
Optimización del almacenamiento de pequeños objetos
Los índices son la clave básica de la velocidad de las consultas de datos. Sin embargo, otro factor que
afecta al rendimiento de la aplicación es el tamaño de los datos accedidos. A diferencia de los sistemas
de bases de datos con esquema fijo, en MongoDB se almacenan todos los datos del esquema para cada
registro en el propio registro. Así, para registros grandes con contenidos de datos grandes por campo, la
relación de los datos del esquema para registrar los datos es baja; sin embargo, para registros pequeños
con valores de datos pequeños, la relación puede crecer ampliamente.
2. BASES DE DATOS LOCALES VERSUS SERVICIOS DE TERCEROS
Otra de las preguntas que nos podríamos hacer respecto al almacenamiento de los datos de nuestras
aplicaciones web, es la posibilidad de tener un servidor propio de base de datos y gestionaría nosotros
mismos, o bien delegar esta tarea a una compañía externa haciendo uso de servicios de terceros,
desplegando dicha base de datos en la Nube La mayoría de las aplicaciones comerciales actuales optan
por tener una arquitectura descentralizada mediante esta última opción. De esta forma, no debemos
preocuparnos por el mantenimiento del servidor de base de datos, su seguridad, su escalabilidad y todos
esos temas que
deberíamos tener en consideración si decidimos tener un servidor de bases de datos propio.
Los creadores de MongoDB conocen este problema y nos ofrecen un completo entorno de
almacenamiento en la Nube denominado MongoDB Atlas. MongoDB Atlas es un Das (Database as a
Service) con el que podemos crear completos clústeres de bases de datos MongoDB en la Nube de forma
sencilla y sin preocupamos por su instalación y administración.
Por supuesto, hoy en día, MongoDB Atlus no es la única opción existente, pero gracias a que tiene el
soporte de la compañía que cred MongoDB, su facilidad de uso, y la posibilidad de crear un cluster de
forma gratuita, lo utilizaremos para alojar la base de datos de nuestra aplicación web. En el caso de que
la cantidad de datos almacenados crezca, las transacciones con la base de
datos aumenten y nuestras necesidades sean mayores, el servicio nos aconsejará pasamos a un cluster de
pago, si lo deseamos.
En los siguientes apartados veremos, por un lado, cómo utilizar MongoDB Atlas como servicio de base
de datos MongoDB en la Nube (recomendado), y por otro, la opción de realizar una instalación de un
servidor MongoDB en local asi como usar la she de MongoDB para conectarse a nuestra base de datos
previamente creada en MongoDB Atlas
2.1 MongoDB para desarrolladores NoSQL
A medida que MongoDB ha pasado de ser una solución de base de datos de nicho a la navaja suiza de
las tecnologías NoSQL, cada vez más desarrolladores también están llegando a ella con experiencia en
NoSQL.
Dejando a un lado las diferencias entre SQL y NoSQL, los usuarios de bases de datos de tipo columna
se enfrentan a la mayoría de los desafíos. Como Cassandra y HBase son los sistemas de administración
5. de bases de datos orientados a columnas más populares, examinaremos las diferencias y cómo un
desarrollador puede migrar un sistema a MongoDB.
• Flexibilidad: la noción de MongoDB de documentos que pueden contener subdocumentos anidados
en jerarquías complejas es realmente expresiva y flexible. Esto es similar a la comparación entre
MongoDB y SQL, con el beneficio adicional de que MongoDB puede mapear más fácilmente objetos
antiguos desde cualquier lenguaje de programación, lo que permite una fácil implementación y
mantenimiento.
Modelo de consulta flexible: un usuario puede indexar selectivamente algunas partes de cada
documento, realizar consultas según valores de atributos, expresiones regulares o rangos, y tener tantas
propiedades por objeto como necesite la capa de aplicación. Los índices primarios y secundarios, así
como los tipos especiales de índices, como los dispersos, pueden ser de gran ayuda con la eficiencia de
las consultas. El uso de un shell de JavaScript con MapReduce hace que sea realmente fácil para la
mayoría de los desarrolladores y muchos analistas de datos analizar rápidamente los datos y obtener
información valiosa.
Agregación nativa: el marco de agregación proporciona una canalización ETL para que los usuarios
extraigan y transformen datos de MongoDB y los carguen en un nuevo formato o los exporten de
MongoDB a otros, y tener tantas propiedades por objeto como necesite la capa de aplicación. Los índices
primarios y secundarios, así como los tipos especiales de índices, como los dispersos, pueden ser de gran
ayuda con la eficiencia de las consultas. El uso de un shell de JavaScript con MapReduce hace que sea
realmente fácil para la mayoría de los desarrolladores y muchos analistas de datos analizar rápidamente
los datos y obtener información valiosa.
Agregación nativa: el marco de agregación proporciona un ETL canalización para que los usuarios
extraigan y transformen datos de MongoDB y los carguen en un nuevo formato o los exporten desde
MongoDB a otras fuentes de datos. Esto también puede ayudar a los analistas de datos y a los científicos
a obtener la porción de datos que necesitan para realizar la negociación de datos a lo largo del camino.
Modelo sin esquema: este es el resultado de la filosofía de diseño de MongoDB de
otorga a las aplicaciones el poder y la responsabilidad de interpretar diferentes propiedades que se
encuentran en los documentos de una colección. A diferencia del enfoque basado en esquemas de
Cassandra o HBase, en MongoDB un desarrollador puede almacenar y procesar atributos generados
dinámicamente.
3. Rendimiento y Escalabilidad de MongoDB:
Una base de datos flexible y moderna, diseñada para manejar grandes volúmenes de datos y escalar
eficientemente conforme aumenta la necesidad. A continuación, se presentan varios aspectos importantes
para el rendimiento y escalabilidad de MongoDB:
Escalado Vertical y Horizontal: MongoDB puede escalar así como horizontalmente, también
verticalmente. El escalado vertical implica aumentar la potencia de procesamiento de un solo servidor
también llamado clúster. Si bien, hay un límite en términos de potencia de rendimiento y procesamiento
máximo. Por otra parte, el escalado horizontal, también conocido como escalado hacia fuera, implica
6. agregar nodos adicionales para compartir la carga. Esto es más simple con bases de datos no relacionales
como MongoDB, ya que las colecciones son autónomas y no están acopladas relacionalmente.
Conjuntos de Réplicas y Sharding: El escalado horizontal en MongoDB se logra a través del sharding
y los conjuntos de réplicas. El sharding es una técnica que implica dividir los datos en múltiples
servidores, donde cada servidor contiene un subconjunto de los datos totales. Esto es especialmente
efectivo para aumentar el rendimiento en casos de uso que implican una cantidad significativa de
operaciones de escritura.
Rendimiento de la Aplicación: El rendimiento de MongoDB puede ser optimizado a nivel de aplicación
a través de una serie de técnicas. Estas incluyen la afinación del disco, la optimización de la memoria y
consultas, y la configuración del hardware y la configuración del clúster para un rendimiento óptimo.
Para obtener una comprensión más profunda de estos temas, te recomendaría los siguientes libros:
“MongoDB Performance Tuning: Optimizing MongoDB Databases and their Applications” por
Guy Harrison y Michael Harrison. Este libro ofrece un enfoque metódico y completo para la
optimización del rendimiento que comienza con el diseño de la aplicación y el esquema y cubre
la optimización del código en todos los niveles de una aplicación. (MongoDB: The Definitive
Guide” por Kristina Chodorow y Mike Dirolf).
Soporte de índices: Los índices en MongoDB son estructuras de datos que almacenan una pequeña
porción de los datos de la colección de tal forma que sea fácil de recorrer. Los índices almacenan el valor
de un campo específico o de un conjunto de campos, ordenados por el valor de dichos campos. Los
índices en MongoDB se generan en forma de Árbol-B o B-Tree, lo que incrementa la velocidad a la hora
de buscar y también a la hora de devolver resultados ya ordenados.
En MongoDB hay varios tipos de indices:
Índices simples o de un solo campo: Estos índices se aplican a un solo campo de nuestra colección.
Para declarar un índice de este tipo debemos usar un comando similar a este: db.users.ensureIndex ( {
"user_id" : 1 } )2.
Índices compuestos: En este caso el índice se generará sobre varios campos. Por ejemplo:
db.users.ensureIndex ( { "user_name" : 1, "age":-1 } )2.
Para obtener el mejor rendimiento, se recomienda que todos los índices de todas las colecciones caben
en la RAM del servidor MongoDB para evitar leer los índices del disco.
Información general de MongoDB:
Observación MongoDB
Descripción Base de datos Orienta a Documentos más
populares
Modelos Documental
Lenguaje desarrollado C++
Licencia Open Source
Sistemas Operativos • Linux
• OS X
• Solaris
7. • Windows
Metodos de acceso /API proprietary protocol using JSON
Lenguajes de Programación que soporta • Actionscript
• C
• C#
• C++
• Clojure
• ColdFusion
• D
• Dart
• Delphi
• Erlang
• Go
• Groovy
• Haskell
• Java
• JavaScript
• Lisp
• Lua
• MatLab
• Perl
• PHP
• PowerShell
• Prolog
• Python
• R
• Ruby
• Scala
• Smalltalk
MapReduce yes
Transacción Multidocument ACID
Transactions with snapshot isolation
Metodos de Replicación Master-slave
Consistencia Eventual Inmediato
Moreno Collazos, A. (Año). MongoDB: Característica, casos de uso y ventajas frente a otras bases de
datos documentales. Pontificia Universidad Javeriana de Cali.
MongoDB es una de las bases de datos NoSQL más populares debido a su simplicidad, escalabilidad y
rendimiento (Chen, Zhang, & Chen, 2014). Sin embargo, la seguridad en MongoDB ha sido durante
mucho tiempo una preocupación (Vijayan, 2017). Este trabajo explora los principales desafíos de
seguridad en MongoDB y las oportunidades para abordarlos.
8. 4.Desafíos de seguridad
Uno de los mayores problemas de seguridad en MongoDB es su configuración predeterminada que no
requiere autenticación para acceder a la base de datos (Chodorow & Dirolf, 2010). Esto hace que las
instalaciones de MongoDB sean vulnerables a ataques si no se implementan mecanismos de
autenticación. Otro desafío es el manejo de permisos, ya que MongoDB confía en el sistema de archivos
subyacente para controlar el acceso (Redman, 2015). Si no se configuran correctamente los permisos en
el nivel del sistema de archivos, esto puede conducir a exposiciones de datos.
4.1 Oportunidades de mejora
Existen varias oportunidades para abordar estos desafíos. MongoDB ahora requiere autenticación para
acceder a las bases de datos, lo que mejora considerablemente la seguridad predeterminada (MongoDB,
2020). Otras medidas como la habilitación de TLS/SSL, el uso de firewalls, la autenticación basada en
tokens y la auditoría de acceso también pueden reforzar la protección de datos (Chandrasekaran & Joshi,
2018; MongoDB, 2018). El uso de herramientas de gestión de seguridad como MongoDB Cloud
Manager también pueden agilizar el cumplimiento y la administración de permisos complejos
(MongoDB, n.d.).
Además, la implementación de medidas como la habilitación de TLS/SSL, el uso de firewalls y la
autenticación basada en tokens puede fortalecer aún más la protección de los datos almacenados en
MongoDB (Chandrasekaran & Joshi, 2018; MongoDB, 2018). El uso de TLS/SSL asegura la
comunicación encriptada entre los componentes del sistema, mientras que los firewalls ayudan a
controlar y filtrar el tráfico de red. La autenticación basada en tokens proporciona una capa adicional de
seguridad al requerir la presentación de un token válido para acceder a los recursos.
Además, la auditoría de acceso es una medida importante para monitorear y registrar las actividades
realizadas en la base de datos. Esto permite identificar posibles intentos de acceso no autorizado o
actividades sospechosas, proporcionando un registro de eventos para su posterior análisis y seguimiento
(MongoDB, 2018).
El uso de herramientas de gestión de seguridad, como MongoDB Cloud Manager, puede ser beneficioso
para simplificar el cumplimiento de normas y la administración de permisos complejos (MongoDB, s.f.).
Estas herramientas proporcionan una interfaz centralizada para administrar y monitorear múltiples
instancias de MongoDB, lo que facilita la implementación de políticas de seguridad y garantiza una
administración eficiente de los permisos de acceso.
4.2 Discusión.
La seguridad de los datos es un tema de vital importancia en el mundo digital actual. MongoDB, una
popular base de datos NoSQL, ha experimentado un progreso significativo en términos de seguridad en
los últimos años. A pesar de los desafíos iniciales que enfrentó, la empresa ha trabajado arduamente para
abordar las vulnerabilidades y mejorar la protección de sus bases de datos.
Una de las áreas clave en la que MongoDB ha realizado avances es en la implementación de
características y herramientas de seguridad más robustas. La empresa ha introducido nuevas
9. funcionalidades que permiten a los administradores de bases de datos configurar y administrar los
aspectos de seguridad de manera más efectiva. Por ejemplo, se han incorporado capacidades avanzadas
de autenticación y autorización en el sistema, lo que garantiza que solo los usuarios autorizados puedan
acceder a los datos.Además, MongoDB ha trabajado en estrecha colaboración con la comunidad de
seguridad y ha respondido de manera proactiva a los informes de vulnerabilidades. Esto demuestra su
compromiso con la protección de los datos y su disposición para abordar cualquier problema de seguridad
que pueda surgir.
A pesar de estos avances, es importante destacar que la configuración y administración adecuadas siguen
siendo fundamentales para garantizar una protección efectiva de las bases de datos de MongoDB. Si bien
la plataforma en sí misma proporciona herramientas y características de seguridad, es responsabilidad de
los administradores implementar las mejores prácticas y seguir los protocolos recomendados para
proteger los datos.En este sentido, la evolución de MongoDB en términos de seguridad no se detendrá
aquí. La empresa continuará introduciendo nuevas características y herramientas de seguridad para
abordar los desafíos emergentes en el panorama de la seguridad de datos. Por ejemplo, la administración
de identidades y el acceso basado en roles son áreas que requieren más investigación y desarrollo.
La administración de identidades se refiere a la gestión de las identidades de los usuarios y su acceso a
los recursos de la base de datos. Esto implica establecer políticas y procedimientos para la creación,
modificación y eliminación de cuentas de usuario, así como la asignación de privilegios y roles
adecuados. Una administración de identidades sólida garantiza que solo las personas autorizadas puedan
acceder a los datos y ayuda a prevenir brechas de seguridad causadas por usuarios no autorizados.
El acceso basado en roles es otra área que requiere atención en términos de seguridad de datos en
MongoDB. Permite la asignación de roles específicos a los usuarios, lo que determina qué acciones
pueden realizar en la base de datos. Al implementar un modelo de acceso basado en roles, los
administradores pueden limitar los privilegios a nivel granular y garantizar que los usuarios solo tengan
acceso a los datos y las operaciones necesarias para llevar a cabo sus tareas
5. Datos orientados a documentos
Los datos orientados a documentos son una forma de almacenar y gestionar la información que se basa
en el concepto de documento, una unidad lógica que contiene pares de clave-valor. Los documentos
pueden tener diferentes estructuras y tipos de datos, lo que permite una mayor flexibilidad y escalabilidad
que los modelos de datos relacionales, que se basan en tablas, filas y columnas. Los documentos se
almacenan generalmente en formato JSON o BSON, que son formatos de texto ligeros y fáciles de leer
y procesar.
MongoDB es una de las bases de datos orientadas a documentos más populares y utilizadas en la
actualidad. MongoDB ofrece un modelo de consultas e indexación avanzado, que permite realizar
operaciones complejas y eficientes sobre los datos. Además, MongoDB soporta características como la
replicación, el sharding, las transacciones, los agregados, los cambios de esquema y la validación de
datos.
10. Una de las decisiones clave al diseñar modelos de datos para aplicaciones MongoDB es cómo representar
las relaciones entre los datos. MongoDB permite dos formas principales de modelar las relaciones:
mediante la incrustación o mediante las referencias. La incrustación consiste en almacenar los datos
relacionados en un solo documento, lo que facilita la recuperación y la manipulación de los datos en una
sola operación de base de datos. Las referencias consisten en almacenar los identificadores de los
documentos relacionados en un campo o una matriz, lo que permite mantener los datos normalizados y
evitar la redundancia.
La elección entre la incrustación y las referencias depende de varios factores, como la cardinalidad de la
relación, la frecuencia de acceso y modificación de los datos, el tamaño de los documentos y las
necesidades de rendimiento de la aplicación. En general, la incrustación es preferible cuando la relación
es de uno a uno o de uno a pocos, cuando los datos relacionados se acceden juntos con frecuencia y
cuando los documentos no superan el límite de tamaño de 16 MB. Las referencias son preferibles cuando
la relación es de uno a muchos o de muchos a muchos, cuando los datos relacionados se acceden por
separado o con poca frecuencia y cuando los documentos son muy grandes o crecen dinámicamente.
Un ejemplo de modelo de datos orientado a documentos con MongoDB es el siguiente:
Supongamos que queremos almacenar la información de los clientes y sus pedidos de una tienda online.
Una forma de modelar estos datos es mediante la incrustación, de forma que cada documento de la
colección clientes contenga un campo pedidos que sea una matriz de documentos con los detalles de cada
pedido. Esta forma de modelar los datos facilita la consulta y la actualización de los datos de los clientes
y sus pedidos, ya que se puede hacer en una sola operación. Sin embargo, esta forma de modelar los
datos también tiene algunas desventajas, como el aumento del tamaño de los documentos, la posible
duplicación de los datos de los productos y la dificultad para realizar consultas agregadas sobre los
pedidos.
Otra forma de modelar estos datos es mediante las referencias, de forma que cada documento de la
colección clientes contenga un campo pedidos que sea una matriz de identificadores de los documentos
de la colección pedidos, que a su vez contengan un campo cliente que sea el identificador del documento
correspondiente de la colección clientes. Esta forma de modelar los datos permite mantener los datos
normalizados y evitar la redundancia, así como realizar consultas agregadas sobre los pedidos. Sin
embargo, esta forma de modelar los datos también tiene algunas desventajas, como la necesidad de
realizar varias operaciones de base de datos para acceder y modificar los datos de los clientes y sus
pedidos. (MongoDB, 2021).
5.1Diseño de esquema
Aunque MongoDB no requiere un esquema fijo para los documentos, es importante diseñar un esquema
adecuado para cada colección, teniendo en cuenta las necesidades de la aplicación, el rendimiento, la
consistencia y la facilidad de acceso a los datos. El diseño de esquema en MongoDB puede seguir dos
enfoques principales: la normalización o la desnormalización. La normalización consiste en separar los
datos en diferentes colecciones y referenciarlos mediante identificadores. La desnormalización consiste
en agrupar los datos relacionados en un solo documento, mediante la inclusión o el anidamiento. Cada
enfoque tiene sus ventajas y desventajas, dependiendo del tipo y la frecuencia de las operaciones que se
realicen sobre los datos
11. 5.2 Compensaciones del patrón de subconjunto
El uso de documentos más pequeños que contienen datos a los que se accede con más frecuencia reduce
el tamaño total del conjunto de trabajo. Estos documentos más pequeños dan como resultado un
rendimiento de lectura mejorado y hacen que haya más memoria disponible para la aplicación. Sin
embargo, es importante comprender su aplicación y la forma en que carga datos. Si divide sus datos en
varias colecciones de manera incorrecta, su aplicación a menudo necesitará realizar varios viajes a la
base de datos y depender de JOINoperaciones para recuperar todos los datos que necesita. Además,
dividir sus datos en muchas colecciones pequeñas puede aumentar el mantenimiento requerido de la base
de datos, ya que puede resultar difícil rastrear qué datos están almacenados en cada colección.
(MongoDB, 2021).
Modelos de datos para el comercio electrónico
Una aplicación de comercio electrónico suele tener varios tipos de datos, como productos, clientes,
pedidos, inventario, etc. Estos datos pueden modelarse de diferentes formas en MongoDB, dependiendo
de los requisitos de la aplicación. Por ejemplo, los productos pueden almacenarse como documentos
independientes, con sus atributos, categorías, imágenes, etc. Los clientes pueden almacenarse como
documentos que incluyen sus datos personales, direcciones, preferencias, historial de compras, etc. Los
pedidos pueden almacenarse como documentos que referencian los productos y los clientes, o que los
incluyen como subdocumentos. El inventario puede almacenarse como un campo dentro de los
documentos de productos, o como una colección separada que se actualiza periódicamente.
Colecciones y documentos
Una colección es una agrupación de documentos en MongoDB, que equivale a una tabla en una base de
datos relacional. Una colección puede contener documentos con diferentes esquemas, aunque se
recomienda que tengan una estructura similar. Una colección puede tener un nombre, un índice, una
validación de esquema, una configuración de cifrado, etc. Un documento es una unidad básica de datos
en MongoDB, que equivale a una fila o registro en una base de datos relacional. Un documento es un
objeto JSON o BSON que contiene pares de clave-valor, que pueden ser de diferentes tipos, como
cadenas, números, booleanos, fechas, arreglos, objetos, etc. Un documento puede tener un tamaño
máximo de 16 MB (MongoDB, 2021).
Consultas y operaciones
En MongoDB, las consultas se realizan utilizando el lenguaje de consulta de MongoDB (MQL), que es
un lenguaje basado en JSON para expresar consultas y operaciones de manipulación de datos. Las
consultas pueden incluir criterios de búsqueda, proyecciones, ordenamientos, limitaciones, entre otros.
Además de las consultas, MongoDB ofrece una amplia gama de operaciones para insertar, actualizar y
eliminar documentos, así como para realizar agregaciones y realizar operaciones de búsqueda
geoespacial. Estas operaciones se realizan utilizando métodos específicos proporcionados por el
controlador o driver de MongoDB en el lenguaje de programación utilizado.
12. Conclusiones.
MongoDB se ha consolidado como una de las bases de datos NoSQL más populares debido a su
flexibilidad para almacenar datos en formato de documentos JSON/BSON, su escalabilidad horizontal a
través de sharding y replicación, y su alto rendimiento para consultas y escrituras. Sin embargo, sus
características iniciales plantearon desafíos de seguridad que ahora ha ido resolviendo a través del
desarrollo de nuevas funcionalidades. Se ha convertido en una plataforma completa multi-nube que
satisface las necesidades de desarrolladores modernos.
El modelo orientado a documentos de MongoDB permite representar datos y objetos de forma más
natural que en bases de datos relacionales, al poder guardar subdocumentos anidados sin estrictas
definiciones esquemáticas. Esto facilita la implementación y mantenimiento de aplicaciones al ser
compatible con lenguajes y formatos como JSON y BSON. Sin embargo, la ausencia de esquema requiere
que los desarrolladores se encarguen de interpretar correctamente los campos dentro de cada colección.
Para modelar relaciones en MongoDB existen dos opciones principales: la incrustación de datos
relacionados dentro de un mismo documento, o el uso de referencias con IDs hacia otros documentos.
La elección depende de factores como la cardinalidad, frecuencia de acceso y tamaño de documentos.
La incrustación es ideal para relaciones uno-uno o uno-pocos con muchos accesos conjuntos, mientras
que referencias aplica mejor para relaciones uno-muchos o muchos-muchos cuando los datos se acceden
por separado.
Los índices son cruciales para optimizar el rendimiento de consultas en MongoDB. Existen índices
simples de un campo, compuestos de varios campos, e índices especializados como los dispersos. Para
mejor desempeño todos los índices deben caber en memoria RAM evitando lecturas desde disco. Las
consultas se benefician de estructuras como el árbol B para buscar y devolver resultados ordenados.
El escalado horizontal a través de sharding permite dividir las colecciones en fragmentos almacenados
en distintos servidores, distribuyendo la carga y mejorando el rendimiento en escenarios con grandes
volúmenes de escrituras. La replicación de datos mediante conjuntos de réplicas proporciona alta
disponibilidad y tolerancia a fallos. Estas técnicas, junto con optimizaciones a nivel de aplicación,
posibilitan el escalado elástico de MongoDB.
Si bien las configuraciones predeterminadas de MongoDB planteaban problemas de seguridad, la
empresa ha progresado notablemente para fortalecer la protección de datos mediante el requerimiento de
autenticación, TLS/SSL, firewalls, auditoría de acceso y herramientas de gestión como MongoDB Cloud
Manager. Sin embargo, los administradores deben implementar adecuadamente las mejores prácticas y
protocolos recomendados.
La inclusión nativa de MapReduce y el completo marco de agregación en MongoDB facilitan el análisis
y procesamiento de datos mediante la extracción, transformación y carga de información de manera
sencilla a través de funciones JavaScript. Esto agiliza las tareas que comúnmente realizan data scientists
y analistas de datos al acortar la distancia entre almacenamiento y análisis.
MongoDB posee librerías y drivers para una amplia variedad de lenguajes de programación, lo que
permite aprovechar su flexibilidad y escalabilidad desde múltiples entornos. El protocolo de acceso
13. basado en JSON también facilita la integración con aplicaciones existentes y el desarrollo de nuevas
mediante interfaces amigables y compatibles.
El uso nativo de MongoDB Atlas como servicio administrado en la nube evita la necesidad de mantener
la infraestructura, liberando a los desarrolladores de tareas de configuración, monitoreo y mantenimiento
del clúster. Esta opción en modelos pagos permite escalar elásticamente la capacidad según las
necesidades, delegando en la proveedora la gestión del hardware y los problemas de disponibilidad.
Referencias Bibliográficas:
• MongoDB. (2021). Data Modeling Introduction [Introducción al modelado de datos],
https://docs.mongodb.com/manual/core/data-modeling-introduction/
• MongoDB. (2021). Data Model Examples and Patterns [Ejemplos y patrones de modelado de
datos https://docs.mongodb.com/manual/applications/data-models/
• MongoDB. (2021). Documents [Documentos]
• https://docs.mongodb.com/manual/core/document/
• MongoDB. (2021). Queries and Operations [Consultas y operaciones]
• https://docs.mongodb.com/manual/tutorial/query-documents/
• https://stackoverflow.com/questions/3717024/mongodb-assumes-64-bit-system-does-it-mean-
the-hardware-or-the-os-kernel-or-bo
• https://www.tutorialspoint.com/mongodb/mongodb_replication.htm
• https://www.kenwalger.com/blog/nosql/mongodb/mongodb-storage-engine-journaling/
• "Jesus Fontecha Diezma; Manuel Ángel Serrano Martín; Ramón Hervás Lucas; Iván González
Díaz". (2020). MERN. Guía Práctica de Aplicaciones Web. RA-MA Editorial.
• Alex Giamas. (2017). Mastering MongoDB 3.x. Packt Publishing.
• Sarasa Cabezuelo, Antonio. (2016). Introducción a las bases de datos NoSQL usando MongoDB.
Editorial UOC, S.L.
• "Jesus Fontecha Diezma; Manuel Ángel Serrano Martín; Ramón Hervás Lucas; Iván González
Díaz". (2020). MERN. Guía Práctica de Aplicaciones Web. RA-MA Editorial.
• Poveda Galvis, J. P. (2015). Propuesta de Notación Gráfica Para el Modelo Orientado a
Documentos de MongoDB. Trabajo de grado para optar por el título de Ingeniero Electrónico.
Bogotá, Colombia.
• Chandrasekaran, B., & Joshi, K. P. (2018). Role based access control model for MongoDB.
International Journal of Engineering & Technology, 7(2.6), 102-105.
https://doi.org/10.14419/ijet.v7i2.6.12711
• Chen, W., Zhang, J., & Chen, Y. (2014). Using SQL to query NoSQL in cloud. Proceedings –
2014 IEEE 7th International Conference on Cloud Computing Technology and Science,
CloudCom 2014 (pp. 77-84). IEEE. https://doi.org/10.1109/CloudCom.2014.54
• Chodorow, K., & Dirolf, M. (2010). MongoDB: The definitive guide. O’Reilly Media
• MongoDB. (n.d.). MongoDB Cloud Manager. https://www.mongodb.com/cloud/cloud-manager
• MongoDB. (2018). Auditing in MongoDB.
https://www.mongodb.com/docs/manual/tutorial/audit-configurations/
• MongoDB. (2020). Security-enabled MongoDB deployments.
https://www.mongodb.com/try/download/community
14. • Redman, T. (2015). Data driven: Profiting from your most important business asset. Harvard
Business Review Press.
• Vijayan, J. (2017, February). MongoDB security flaws expose data. Computerworld.
https://www.computerworld.com/article/3167406/mongodb-security-flaws-expose-data.html
• Chandrasekaran, K., & Joshi, J. B. (2018). Security Features in MongoDB and Its Comparison
with RDBMS. International Journal of Computer Sciences and Engineering, 6(10), 479-483.
• MongoDB. (2018). Security Checklist - MongoDB Manual. Recuperado
de https://docs.mongodb.com/manual/administration/security-checklist/
• MongoDB. (2020). Security in MongoDB. Recuperado de https://www.mongodb.com/security
• MongoDB. (s.f.). MongoDB Cloud Manager. Recuperado
de https://www.mongodb.com/cloud/cloud-manager
• https://www.oreilly.com/library/view/mongodb-performance-
tuning/9781484268797/html/499970_1_En_2_Chapter.xhtml
• https://www.kenwalger.com/blog/nosql/mongodb/little-schema-design-book/
• https://www.packtpub.com/product/mongodb-fundamentals/9781839210648