Денормализация данных

Преобразование и анализ данных с Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

Что такое нормализация?

  • Организация данных для сокращения избыточности и повышения целостности
  • Основана на принципах, сформулированных в 1970 году учёным Теддом Коддом, создателем реляционной модели
  • Третья нормальная форма (3NF): неключевые атрибуты зависят только от первичного ключа
Преобразование и анализ данных с Microsoft Fabric

Что такое нормализация?

  • Нормализация достигается за счёт использования ключей и новых таблиц вместо атрибутов, которые иначе приводили бы к избыточности данных.

 

Диаграмма, иллюстрирующая разбиение одной таблицы на три для сокращения избыточности

Преобразование и анализ данных с Microsoft Fabric

Пример нормализации

Пример таблицы с названиями видеоигр, их издателями и жанрами. Пример строки: Gran Turismo, издатель Sony, жанр Racing

  • Значения publisher и genre многократно дублируются в виде текста.
Преобразование и анализ данных с Microsoft Fabric

Пример нормализации

Пример таблицы с видеоиграми, издателями и жанрами. Текстовые описания издателей и жанров вынесены в отдельные таблицы, а в таблице игр заменены числовыми идентификаторами

  • Текстовые значения publisher и genre теперь хранятся только по одному разу.
  • Числовые ключи вместо publisher и genre в таблице Games занимают меньше места
Преобразование и анализ данных с Microsoft Fabric

Денормализация

  • Денормализация использует избыточность для «уплощения» модели данных — это противоположность нормализации
  • Денормализация сокращает число таблиц за счёт увеличения избыточности

Диаграмма, иллюстрирующая объединение нескольких таблиц в одну

Преобразование и анализ данных с Microsoft Fabric

Когда применять нормализацию?

  • Транзакционные системы OLTP

    • Оптимизация операций записи (вставка, обновление и удаление записей)
    • Обеспечение целостности данных
  • Таблицы фактов

    • Миллионы строк
    • Экономия места в хранилище
    • Упрощение понимания модели
    • Основа для схемы «звезда»

 

Диаграмма схемы «звезда» с выделенной таблицей фактов

Преобразование и анализ данных с Microsoft Fabric

Когда применять денормализацию?

  • Таблицы измерений
    • Как правило, значительно меньше таблиц фактов
    • Избыточность = меньше соединений = более быстрые запросы
    • Прирост производительности запросов перевешивает затраты на хранение избыточных данных
    • Схема «звезда» проще, чем схема «снежинка»

 

Диаграмма схемы «звезда» с выделенными таблицами измерений

Преобразование и анализ данных с Microsoft Fabric

Реализация денормализации

 

 

Иконки трёх инструментов: SQL, Spark и Dataflows

Преобразование и анализ данных с Microsoft Fabric

Денормализация с помощью SQL

  • Оператор 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
Преобразование и анализ данных с Microsoft Fabric

Денормализация с помощью Spark

  • Методы join( ) и select( ) для DataFrame
# [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()
Преобразование и анализ данных с Microsoft Fabric

Денормализация с помощью Dataflows

  • Загрузите данные с помощью запросов
  • Используйте преобразования Merge queries или Merge queries as new для объединения запросов

Снимок экрана Dataflow с преобразованием Merge queries as new для объединения запросов videogames, genres и publishers

Преобразование и анализ данных с Microsoft Fabric

Давайте потренируемся!

Преобразование и анализ данных с Microsoft Fabric

Preparing Video For Download...