Denormalizace dat

Transform and Analyze Data with Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

Co je normalizace?

  • Uspořádání dat za účelem snížení redundance a zvýšení integrity
  • Vychází z principů z roku 1970 informatika Tedda Codda, tvůrce relačního modelu
  • Třetí normální forma (3NF): neklíčové atributy závisí pouze na primárním klíči
Transform and Analyze Data with Microsoft Fabric

Co je normalizace?

  • Normalizace se dosahuje pomocí klíčů a nových tabulek, které nahrazují atributy vedoucí k redundanci dat.

 

Diagram znázorňující rozdělení jedné tabulky na tři za účelem snížení redundance

Transform and Analyze Data with Microsoft Fabric

Příklad normalizace

Ukázková tabulka videoher s názvy, vydavateli a žánry. Příklad řádku: Gran Turismo, Sony, Racing

  • Velké množství duplicitních textových záznamů pro hodnoty publisher a genre.
Transform and Analyze Data with Microsoft Fabric

Příklad normalizace

Ukázková tabulka videoher s názvy, vydavateli a žánry. Textové popisy vydavatelů a žánrů byly přesunuty do samostatných tabulek a nahrazeny číselnými ID odkazujícími na tyto tabulky

  • Textové záznamy pro hodnoty publisher a genre se nyní vyskytují pouze jednou.
  • Číselné klíče nahrazující publisher a genre v tabulce Games zabírají méně místa
Transform and Analyze Data with Microsoft Fabric

Denormalizace

  • Denormalizace využívá redundanci k zploštění datového modelu; je opakem normalizace
  • Denormalizace vede k menšímu počtu tabulek za cenu zvýšené redundance

Diagram znázorňující spojení více tabulek do jedné

Transform and Analyze Data with Microsoft Fabric

Kdy použít normalizaci?

  • OLTP transakční systémy

    • Optimalizace pro zápis dat (vkládání, aktualizace a mazání)
    • Zajištění integrity dat
  • Tabulky faktů

    • Miliony řádků
    • Snížení nároků na úložiště
    • Jednodušší pochopení modelu
    • Základ pro hvězdicové schéma

 

Diagram hvězdicového schématu se zvýrazněnou tabulkou faktů

Transform and Analyze Data with Microsoft Fabric

Kdy použít denormalizaci?

  • Tabulky dimenzí
    • Obvykle mnohem menší než tabulky faktů
    • Redundance = méně spojení = rychlejší dotazy
    • Zlepšení výkonu dotazů převáží náklady na ukládání redundantních dat
    • Hvězdicové schéma je jednodušší než schéma sněhové vločky

 

Diagram hvězdicového schématu se zvýrazněnými tabulkami dimenzí

Transform and Analyze Data with Microsoft Fabric

Implementace denormalizace

 

 

Ikony tří nástrojů: SQL, Spark a Dataflows

Transform and Analyze Data with Microsoft Fabric

Implementace denormalizace pomocí SQL

  • Příkaz SELECT + JOIN
-- [dim_videogames]: Videogames table
-- [dim_genres]: Genres table
-- [dim_publishers]: Publishers table

SELECT game_id, title, gen.genre, pub.publisher
FROM dim_videogames_norm vidg
JOIN dim_genres gen
  ON vidg.genre_id = gen.genre_id
JOIN dim_publishers pub
  ON vidg.publisher_id = pub.publisher_id
Transform and Analyze Data with Microsoft Fabric

Implementace denormalizace pomocí Sparku

  • Metody DataFrame join( ) a select( )
# [videogamesDF]: Videogames DataFrame
# [genresDF]: Genres DataFrame
# [publishersDF]: Publishers DataFrame

videogames1DF = videogamesDF.join(genresDF, ["genre_id"])
videogamesdenormDF = videogames1DF.join(publishersDF, ["publisher_id"])
videogamesdenormDF.select("game_id", "title", "genre_id", "publisher_id").show()
Transform and Analyze Data with Microsoft Fabric

Implementace denormalizace pomocí Dataflows

  • Načtení dat pomocí dotazů
  • Spojení dotazů pomocí transformací Sloučit dotazy nebo Sloučit dotazy jako nové

Snímek obrazovky Dataflow využívajícího transformaci Sloučit dotazy jako nové ke spojení dotazů videogames, genres a publishers

Transform and Analyze Data with Microsoft Fabric

Pojďme si procvičit!

Transform and Analyze Data with Microsoft Fabric

Preparing Video For Download...