Denormalisering - Denormalization

Denormalisering er en strategi, der bruges på en tidligere normaliseret database for at øge ydeevnen. I computing er denormalisering processen med at forsøge at forbedre en databases læseydelse på bekostning af at miste en vis skriveydelse ved at tilføje redundante kopier af data eller ved at gruppere data. Det er ofte motiveret af ydeevne eller skalerbarhed i relationel databasesoftware, der skal udføre et stort antal læsningsoperationer. Denormalisering adskiller sig fra den unormaliserede form ved, at denormaliseringsfordele kun kan realiseres fuldt ud på en datamodel, der ellers er normaliseret.

Implementering

Et normaliseret design vil ofte "gemme" forskellige, men relaterede stykker information i separate logiske tabeller (kaldet relationer). Hvis disse relationer er lagret fysisk som separate disk filer, fuldfører en database forespørgsel , der trækker oplysninger fra flere relationer (en medlemshandling ) kan være langsom. Hvis mange relationer er forbundet, kan det være uoverkommeligt langsomt. Der er to strategier til at håndtere dette.

DBMS -understøttelse

En metode er at holde det logiske design normaliseret, men tillade databasesystemet (DBMS) at gemme yderligere redundante oplysninger på disken for at optimere forespørgselssvar. I dette tilfælde er det DBMS -softwarens ansvar at sikre, at eventuelle redundante kopier holdes konsistente. Denne metode implementeres ofte i SQL som indekserede visninger ( Microsoft SQL Server ) eller materialiserede visninger ( Oracle , PostgreSQL ). En visning kan blandt andre faktorer repræsentere oplysninger i et format, der er praktisk til forespørgsel, og indekset sikrer, at forespørgsler mod visningen optimeres fysisk.

DBA implementering

En anden tilgang er at denormalisere det logiske datadesign. Med omhu kan dette opnå en lignende forbedring af forespørgselssvar, men for en pris - det er nu databasedesignerens ansvar at sikre, at den denormaliserede database ikke bliver inkonsekvent. Dette gøres ved at oprette regler i databasen kaldet begrænsninger , der angiver, hvordan de overflødige kopier af oplysninger skal holdes synkroniseret, hvilket let kan gøre proceduren for de-normalisering meningsløs. Det er stigningen i den logiske kompleksitet i databasedesignet og den ekstra kompleksitet af de yderligere begrænsninger, der gør denne tilgang farlig. Desuden begrænsninger indføre en afvejning , fremskynde læser ( SELECTi SQL), mens bremse skriver ( INSERT, UPDATE, og DELETE). Det betyder, at en denormaliseret database under kraftig skrivebelastning kan tilbyde dårligere ydeevne end dens funktionelt ækvivalente normaliserede modstykke.

Denormalisering versus ikke normaliserede data

En denormaliseret datamodel er ikke det samme som en datamodel, der ikke er normaliseret, og denormalisering bør først finde sted, efter at der er fundet et tilfredsstillende normaliseringsniveau, og at alle nødvendige begrænsninger og/eller regler er blevet oprettet for at håndtere det iboende anomalier i designet. For eksempel er alle relationerne i tredje normal form, og alle forbindelser med join- og flerværdighedsafhængigheder håndteres korrekt.

Eksempler på denormaliseringsteknikker omfatter:

  • "Gem" optællingen af ​​de "mange" elementer i et en-til-mange-forhold som en attribut for "et" -forholdet
  • Tilføjelse af attributter til en relation fra en anden relation, som den vil blive forbundet med
  • Stjerneskemaer , som også er kendt som faktadimensionelle modeller og er blevet udvidet til snefnugskemaer
  • Forudbygget opsummering eller OLAP -terninger

Med den fortsatte dramatiske stigning i alle tre lagrings-, processorkraft- og båndbredde på alle niveauer er denormalisering i databaser flyttet fra at være en usædvanlig eller udvidet teknik, til det almindelige eller endda normen. For eksempel var en specifik ulempe ved denormalisering simpelthen, at den "bruger mere lagerplads" (det vil sige bogstaveligt talt flere kolonner i en database). Med undtagelse af virkelig enorme systemer er dette særlige aspekt blevet gjort irrelevant, og brug af mere lagerplads er et ikke-problem.

Se også

Referencer