No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Desnormalización

19/22
Recursos

Aportes 4

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

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.

Desnormalizacion

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.

Ejemplo

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.

Insercion

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.