Desnormalização

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Estratégia utilizada em bases de dados previamente normalizadas

Desnormalização é uma estratégia usada em um banco de dados previamente normalizado para aumentar o desempenho. Na computação, a desnormalização é o processo de tentar melhorar o desempenho de leitura de um banco de dados, à custa de perder algum desempenho de gravação, adicionando cópias redundantes de dados ou agrupando dados. Muitas vezes, é motivado pelo desempenho ou escalabilidade no software de banco de dados relacional que precisa realizar um número muito grande de operações de leitura. A desnormalização difere da forma não normalizada porque os benefícios da desnormalização só podem ser totalmente realizados em um modelo de dados normalizado.

Implementação

Um design normalizado geralmente "armazena" informações diferentes, mas relacionadas, em tabelas lógicas separadas (chamadas relações). Se essas relações forem armazenadas fisicamente como arquivos de disco separados, a conclusão de uma consulta ao banco de dados que extrai informações de várias relações (uma operação de junção) pode ser lenta. Se muitas relações forem unidas, pode ser proibitivamente lento. Existem duas estratégias para lidar com isso.

Suporte a DBMS

Um método é manter o design lógico normalizado, mas permitir que o sistema de gerenciamento de banco de dados (DBMS) armazene informações redundantes adicionais no disco para otimizar a resposta da consulta. Nesse caso, é responsabilidade do software DBMS garantir que quaisquer cópias redundantes sejam mantidas consistentes. Esse método geralmente é implementado no SQL como exibições indexadas (Microsoft SQL Server) ou exibições materializadas (Oracle, PostgreSQL). Uma exibição pode, entre outros fatores, representar informações em um formato conveniente para consulta, e o índice garante que as consultas na exibição sejam otimizadas fisicamente.

Implementação de DBA

Outra abordagem é desnormalizar o design de dados lógicos. Com cuidado, isso pode alcançar uma melhoria semelhante na resposta da consulta, mas com um custo — agora é responsabilidade do designer do banco de dados garantir que o banco de dados desnormalizado não se torne inconsistente. Isso é feito criando regras no banco de dados chamadas constraints, que especificam como as cópias redundantes de informações devem ser mantidas sincronizadas, o que facilmente pode tornar inútil o procedimento de desnormalização. É o aumento da complexidade lógica do design do banco de dados e a complexidade adicional das restrições adicionais que tornam essa abordagem perigosa. Além disso, as restrições introduzem um trade-off, acelerando as leituras (SELECT no SQL) enquanto desaceleram as gravações (INSERT, UPDATE e EXCLUIR). Isso significa que um banco de dados desnormalizado sob carga de gravação pesada pode oferecer desempenho pior do que sua contraparte normalizada funcionalmente equivalente.

Desnormalização versus dados não normalizados

Um modelo de dados desnormalizado não é o mesmo que um modelo de dados que não foi normalizado, e a desnormalização só deve ocorrer após um nível satisfatório de normalização ter ocorrido e que quaisquer restrições e/ou regras necessárias tenham sido criadas para lidar com as anomalias inerentes ao projeto. Por exemplo, todas as relações estão na terceira forma normal e quaisquer relações com junção e dependências de vários valores são tratadas adequadamente.

Exemplos de técnicas de desnormalização incluem:

  • "Storing" a contagem dos elementos "muitos" em um relacionamento único para muitos como um atributo da relação "um"
  • Adicionando atributos a uma relação de outra relação com a qual será unida
  • schemas de estrelas, que também são conhecidos como modelos de dimensão de fato e foram estendidos para esquemas de flocos de neve
  • Somarização pré-construída ou cubos OLAP

Com o aumento dramático contínuo em todos os três de armazenamento, poder de processamento e largura de banda, em todos os níveis, a desnormalização em bancos de dados deixou de ser uma técnica incomum ou de extensão para o lugar-comum ou até mesmo a norma. Por exemplo, uma desvantagem específica da desnormalização era, simplesmente, que ela "usa mais armazenamento" (ou seja, literalmente mais colunas em um banco de dados). Com exceção de sistemas realmente enormes, esse aspecto específico tornou-se irrelevante e o uso de mais armazenamento não é um problema.

Contenido relacionado

Oberon (linguagem de programação)

Oberon é uma linguagem de programação de uso geral publicada pela primeira vez em 1987 por Niklaus Wirth e o mais recente membro da família Wirthian de...

Bico de Bunsen

Um queimador de Bunsen, em homenagem a Robert Bunsen, é um tipo de queimador de gás de ar ambiente usado como equipamento de laboratório; ele produz uma...

Burroughs Corporation

A Burroughs Corporation foi uma importante fabricante americana de equipamentos comerciais. A empresa foi fundada em 1886 como American Arithmometer Company....
Más resultados...
Tamaño del texto: