Seria muy interesante ahondar mas en el tema de los patrones de MongoDB, ya que parece ser un tema central en el modelado de las DB NoSQL.
Introducción
¿Ya tomaste el Curso de Introducción de MongoDB?
Conceptos fundamentales de NoSQL y MongoDB
Metodología para el modelamiento de datos
Proyecto
Creando la base de datos con MongoDB Atlas
Workload
Entorno de Trabajo con MongoDB: Atlas, GitHub y VSCode
Validación de datos
Validando strings
Validando enums, numbers y booleans
Validando arrays y subdocumentos
Reto: expresión regular para contraseñas
Tips para validación en MongoDB
Relaciones
Embeber vs. referenciar
Relaciones 1 a 1 embebidas
Relaciones 1 a 1 referenciadas
Relaciones 1 a muchos embebidas
Relaciones 1 a muchos referenciadas
Relaciones muchos a muchos
Referencias circulares o bidireccionales
Bonus: patrones
Desnormalización
Computed pattern
Simplicidad vs. rendimiento
Próximos pasos
¿Quieres más cursos de MongoDB?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 4
Preguntas 0
Seria muy interesante ahondar mas en el tema de los patrones de MongoDB, ya que parece ser un tema central en el modelado de las DB NoSQL.
Es el proceso de optimizar el funcionamiento de una BD agregando datos redundantes.
Esto es hacer duplicidad de datos y agregar direcciones no essenciales para acelerar las consultas o reducir la cantidad.
Esta mal visto la duplicidad de datos en una base de datos relacional, pero en una base de datos documental puede ser un aliado. Porque nos ahorramos consultas o aceleramos esas mismas consultas por tener indexacion.
Tambien permite mantener datos historicos, datos que no queremos que cambien en una instancia, aunque tengan cambios sus origines.
Reduce los Join y simplifica las consultas.
Tenemos una coleccion ‘order’ que esta desnormalizada, donde se hace embeding a los productos como items. Estos tendran la referencia sus productos correspondientes (product_id), datos extra como la cantidad (qty) y datos que pueden o no ser actualizados por ser una instancia de la orden (title, price) y que se quieran acceder rapidamente.
db.orders.insertOne({
user_id: ObjectId('6497b8b4affb4e4355c4f297'),
date: '2020-12-12',
items: [
{
name: 'Producto 1',
qty: 1,
price: 12,
product_id: ObjectId('649923f457514437ac501dd4')
},
{
name: 'Producto 2',
qty: 2,
price: 22,
product_id: ObjectId('649923f457514437ac501dd4')
}
]
})
Nunca se me había ocurrido este método.
Básicamente combinar un objeto embebido, con una relación referenciada y repetir los campos importantes (también presentes en la relación anterior) para poder acceder a ellos rápidamente, y si hace falta algo mas especifico, llamar a la relación como tal para tener la información completa, es brillante.
La desnormalización la encontré en la práctica, me era mas sencillo guardar ciertos datos en un mismo documento para realizar un reporte mas adelante. Se complica si tienes relaciones pero si haces desnormalización se simplifica muchísimo. Excelente ejemplo de esta clase.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.