Desnormalización
Desnormalización es una estrategia utilizada en una base de datos previamente normalizada para aumentar el rendimiento. En informática, la desnormalización es el proceso de intentar mejorar el rendimiento de lectura de una base de datos, a expensas de perder algo de rendimiento de escritura, agregando copias redundantes de datos o agrupando datos. A menudo está motivado por el rendimiento o la escalabilidad en el software de base de datos relacional que necesita realizar un gran número de operaciones de lectura. La desnormalización difiere de la forma no normalizada en que los beneficios de la desnormalización solo se pueden realizar por completo en un modelo de datos que, por lo demás, está normalizado.
Implementación
Un diseño normalizado a menudo "almacenará" piezas de información diferentes pero relacionadas en tablas lógicas separadas (llamadas relaciones). Si estas relaciones se almacenan físicamente como archivos de disco separados, completar una consulta de base de datos que extrae información de varias relaciones (una operación de combinación) puede ser lento. Si se unen muchas relaciones, puede ser prohibitivamente lento. Hay dos estrategias para lidiar con esto.
Soporte de DBMS
Un método es mantener el diseño lógico normalizado, pero permitir que el sistema de administración de la base de datos (DBMS) almacene información redundante adicional en el disco para optimizar la respuesta a las consultas. En este caso, es responsabilidad del software DBMS garantizar que las copias redundantes se mantengan coherentes. Este método a menudo se implementa en SQL como vistas indexadas (Microsoft SQL Server) o vistas materializadas (Oracle, PostgreSQL). Una vista puede, entre otros factores, representar información en un formato conveniente para realizar consultas, y el índice garantiza que las consultas en la vista se optimicen físicamente.
Implementación de DBA
Otro enfoque es desnormalizar el diseño de datos lógicos. Con cuidado, esto puede lograr una mejora similar en la respuesta a las consultas, pero a un costo: ahora es responsabilidad del diseñador de la base de datos asegurarse de que la base de datos desnormalizada no se vuelva inconsistente. Esto se hace creando reglas en la base de datos llamadas restricciones, que especifican cómo se deben mantener sincronizadas las copias redundantes de información, lo que fácilmente puede hacer que el procedimiento de desnormalización no tenga sentido. Es el aumento de la complejidad lógica del diseño de la base de datos y la complejidad añadida de las restricciones adicionales lo que hace que este enfoque sea peligroso. Además, las restricciones introducen una compensación, acelerando las lecturas (SELECT
en SQL) mientras ralentizan las escrituras (INSERT
, UPDATE
y BORRAR). Esto significa que una base de datos desnormalizada bajo una gran carga de escritura puede ofrecer un rendimiento peor que su contraparte normalizada funcionalmente equivalente.
Desnormalización frente a datos no normalizados
Un modelo de datos desnormalizado no es lo mismo que un modelo de datos que no ha sido normalizado, y la desnormalización solo debe tener lugar después de que se haya alcanzado un nivel satisfactorio de normalización y que se hayan creado las restricciones y/o reglas necesarias para tratar con las anomalías inherentes en el diseño. Por ejemplo, todas las relaciones están en tercera forma normal y cualquier relación con dependencias de unión y de valores múltiples se maneja de manera adecuada.
Los ejemplos de técnicas de desnormalización incluyen:
- "Mantener" el recuento de los elementos "muchos" en una relación de uno a hombre como atributo de la relación "uno"
- Agregar atributos a una relación de otra relación con la que se unirá
- Esquemas de estrellas, que también se conocen como modelos de dimensión de hechos y se han extendido a esquemas de copo de nieve
- Resumiendo preconstruido o cubos OLAP
Con el continuo aumento dramático en los tres de almacenamiento, potencia de procesamiento y ancho de banda, en todos los niveles, la desnormalización en las bases de datos ha pasado de ser una técnica inusual o de extensión, a un lugar común, o incluso a la norma. Por ejemplo, una desventaja específica de la desnormalización era, simplemente, que "usa más almacenamiento" (es decir, literalmente más columnas en una base de datos). Con la excepción de los sistemas verdaderamente enormes, este aspecto en particular se ha vuelto irrelevante y el uso de más almacenamiento no es un problema.
Contenido relacionado
Verdana
Máquina abstracta
Principio de Kerckhoff