Desnormalização - Denormalization

A 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 , às custas de perder algum desempenho de gravação, adicionando cópias redundantes de dados ou agrupando dados. Muitas vezes, é motivado pelo desempenho ou escalabilidade em um software de banco de dados relacional que precisa realizar um grande número de operações de leitura. A desnormalização difere da forma não normalizada no sentido de que os benefícios da desnormalização só podem ser totalmente realizados em um modelo de dados que, de outra forma, é normalizado.

Implementação

Um projeto normalizado geralmente "armazena" informações diferentes, mas relacionadas, em tabelas lógicas separadas (chamadas de 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 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 à consulta. Nesse caso, é responsabilidade do software DBMS garantir que quaisquer cópias redundantes sejam mantidas consistentes. Este método é frequentemente implementado em SQL como visualizações indexadas ( Microsoft SQL Server ) ou visualizações materializadas ( Oracle , PostgreSQL ). Uma visualização pode, entre outros fatores, representar informações em um formato conveniente para consulta e o índice garante que as consultas na visualização sejam otimizadas fisicamente.

Implementação de DBA

Outra abordagem é desnormalizar o design lógico dos dados. Com cuidado, isso pode alcançar uma melhoria semelhante na resposta à consulta, mas com um custo - agora é responsabilidade do projetista 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 de restrições , que especificam como as cópias redundantes das informações devem ser mantidas sincronizadas, o que pode facilmente tornar o procedimento de desnormalização inútil. É 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 de introduzir um trade-off , acelerando lê ( SELECTno SQL), enquanto a abrandar escreve ( INSERT, UPDATE, e DELETE). 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 o inerente anomalias no design. Por exemplo, todas as relações estão na terceira forma normal e quaisquer relações com dependências de junção e com vários valores são tratadas de forma apropriada.

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

  • "Armazenando" a contagem dos elementos "muitos" em uma relação um-para-muitos como um atributo da relação "um"
  • Adicionando atributos a uma relação de outra relação com a qual ela será associada
  • Esquemas em estrela , que também são conhecidos como modelos de dimensão de fato e foram estendidos para esquemas em floco de neve
  • Sumarização pré-construída ou cubos OLAP

Com o aumento dramático contínuo em todos os três recursos de armazenamento, poder de processamento e largura de banda, em todos os níveis, a desnormalização nos bancos de dados deixou de ser uma técnica incomum ou de extensão para se tornar um lugar comum ou até mesmo a norma. Por exemplo, uma desvantagem específica da desnormalização era, simplesmente, "usar 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 usar mais armazenamento não é um problema.

Veja também

Referências