Описание тега snowflake-schema

** Схема снежинки ** - это частный случай схемы звезды базы данных, где одна или несколько таблиц измерений нормализованы. Это часто делается для повышения производительности в некоторых случаях звездообразной схемы. Когда таблицы измерений полностью нормализованы, результирующая структура напоминает снежинку с таблицами фактов посередине.

Схема "снежинка" - это логическая организация таблиц в многомерной базе данных, в которой измерения выражены более чем одной таблицей. Таблицы измерений, которые относятся к таблице фактов, представляют наименьшую степень детализации анализа данных. Другие таблицы в том же измерении представляют агрегаторы отдельных элементов измерения. Когда измерение агрегируется по нескольким независимым критериям, диаграмма напоминает форму снежинки. Используется в хранилищах данных.

Способы создания схемы снежинки из схемы звезды:

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

Когда использовать

Производительность запросов имеет первостепенное значение в хранилище данных, и снежные хлопья могут снизить производительность. Это очень полезно в случаях, когда некоторые атрибуты, такие как демографические, просматриваются чаще, чем вся таблица клиентов. Другой случай - это предварительно рассчитанные сводки, полученные из таблицы фактов. Это помогает избежать повторной агрегации, поскольку операция стоит дорого.

Преимущества

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

Недостатки

Схемы менее интуитивны, с большей сложностью и абстракцией. Сложный просмотр содержимого для пользователей. Дополнительные соединения - в некоторых случаях хуже производительность запросов.

пример

Наличие таблицы фактов под названием "Продажи" и таблицы измерений под названием "Продукт". Предположим, что имеется 500000 строк измерения продукта. Эти продукты могут подпадать под 10 брендов. Для выполнения запроса для продуктов, не проиндексированных по брендам, запрос должен будет выполнить поиск по 500000 строкам, чтобы найти все бренды.

С другой стороны, если таблица "Продукт" частично нормализована и разделена на другую таблицу "Бренд", начальный поисковый запрос должен будет пройти всего 10 строк.

внешняя ссылка