SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
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.
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
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
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
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
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
• 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.
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
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.
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
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.
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
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
• 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

Más contenido relacionado

Similar a Investigación de sobre los conceptos que se deben de tratar en Mongo DB

Similar a Investigación de sobre los conceptos que se deben de tratar en Mongo DB (20)

Características MONGO DB
Características MONGO DBCaracterísticas MONGO DB
Características MONGO DB
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentes
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Diapositva
DiapositvaDiapositva
Diapositva
 
Mongo bd michael landeo vargas
Mongo bd michael landeo vargasMongo bd michael landeo vargas
Mongo bd michael landeo vargas
 
Base de datos rodrigo
Base de datos rodrigoBase de datos rodrigo
Base de datos rodrigo
 
¿que es mongodb?
¿que es mongodb?¿que es mongodb?
¿que es mongodb?
 
Semana 3 Mongodb
Semana 3   MongodbSemana 3   Mongodb
Semana 3 Mongodb
 
Practica 2 base de datos
Practica 2 base de datosPractica 2 base de datos
Practica 2 base de datos
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
Sgbd mongodb
Sgbd   mongodbSgbd   mongodb
Sgbd mongodb
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentes
 
Mongodb
MongodbMongodb
Mongodb
 
Bases datos
Bases datosBases datos
Bases datos
 
Principales bases de datos existentes
Principales bases de datos existentesPrincipales bases de datos existentes
Principales bases de datos existentes
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Qué es una base de datos
Qué es una base de datosQué es una base de datos
Qué es una base de datos
 
Introduccón a Mongodb
Introduccón a MongodbIntroduccón a Mongodb
Introduccón a Mongodb
 
Software administrativo para crear bases de datos
Software administrativo para crear bases de datosSoftware administrativo para crear bases de datos
Software administrativo para crear bases de datos
 

Último

presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricoalexcala5
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilDissneredwinPaivahua
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...wvernetlopez
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónXimenaFallaLecca1
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 

Último (20)

presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctrico
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civil
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcción
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 

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