Введение
Логическая организация таблиц в многомерной базе данных.
В информатике схема "снежинка" или модель "снежинка" – это логическая организация таблиц в многомерной базе данных, при которой диаграмма "сущность-связь" напоминает форму снежинки. Схема "снежинка" представлена централизованными таблицами фактов, соединенными с несколькими измерениями. "Снежиночная нормализация" – это метод нормализации таблиц измерений в звездной схеме. При полной нормализации по всем таблицам измерений, результирующая структура напоминает снежинку с таблицей фактов в центре. Принцип снежиночной нормализации заключается в нормализации таблиц измерений путем исключения атрибутов с низкой кардинальностью и создания отдельных таблиц. Схема "снежинка" аналогична звездной схеме. Однако в схеме "снежинка" измерения нормализуются в несколько связанных таблиц, в то время как измерения звездной схемы денормализованы, и каждое измерение представлено одной таблицей. Сложная форма "снежинки" возникает, когда измерения схемы "снежинка" сложны, имеют несколько уровней связей, а дочерние таблицы имеют несколько родительских таблиц ("разветвления").
Общее применение
Звездообразные и снежинообразные схемы наиболее часто используются в размерных хранилищах данных и датамартах, где скорость получения данных важнее эффективности операций с данными. Поэтому таблицы в этих схемах обычно слабо нормализованы и часто проектируются с уровнем нормализации ниже третьей нормальной формы.
Нормализация и хранение данных
Нормализация разделяет данные, чтобы избежать избыточности (дублирования), перемещая часто повторяющиеся группы данных в новые таблицы. Поэтому нормализация, как правило, увеличивает количество таблиц, которые необходимо объединить для выполнения конкретного запроса, но уменьшает объем необходимого дискового пространства и количество мест, где требуется обновление данных при их изменении. С точки зрения занимаемого пространства, размерные таблицы обычно значительно меньше таблиц фактов. Это часто нивелирует потенциальные преимущества по объему хранения, которые дает схема "снежинка" по сравнению со схемой "звезда". Пример: один миллион транзакций продаж в 300 магазинах в 220 странах приведет к 1 000 300 записям в схеме "звезда" (1 000 000 записей в таблице фактов и 300 записей в размерной таблице, где каждая страна будет указана отдельно для каждого магазина в этой стране). Более нормализованная схема "снежинка" с ключами стран, ссылающимися на таблицу стран, будет состоять из той же таблицы фактов на 1 000 000 записей, таблицы магазинов на 300 записей со ссылками на таблицу стран на 220 записей. В этом случае схема "звезда", хотя и более денормализованная, уменьшит количество записей лишь на (незначительные) ~0,02% (=[1 000 000 + 300] вместо [1 000 000 + 300 + 220]). Некоторые разработчики баз данных идут на компромисс, создавая базовую схему "снежинка" с представлениями, построенными на ее основе, которые выполняют многие необходимые соединения для имитации схемы "звезда". Это обеспечивает преимущества хранения, достигаемые за счет нормализации размерностей, и простоту запросов, предоставляемую схемой "звезда". Однако компромиссом является то, что требование к серверу автоматически выполнять базовые соединения может привести к снижению производительности при запросах, а также к дополнительным соединениям с таблицами, которые могут быть не нужны для выполнения определенных запросов.
Some database developers compromise by creating an underlying snowflake schema with views built on top of it that perform many of the necessary joins to simulate a star schema. This provides the storage benefits achieved through the normalization of dimensions with the ease of querying that the star schema provides. The tradeoff is that requiring the server to perform the underlying joins automatically can result in a performance hit when querying as well as extra joins to tables that may not be necessary to fulfill certain queries.
Преимущества
Схема снежинки относится к тому же семейству, что и логическая модель звездной схемы. Фактически, звездная схема рассматривается как частный случай схемы снежинки. Схема снежинки имеет некоторые преимущества перед звездной схемой в определенных ситуациях, включая:
Некоторые инструменты моделирования многомерных OLAP-баз данных оптимизированы для схем снежинки. Нормализация атрибутов обеспечивает экономию места для хранения, однако это достигается за счет увеличения сложности соединений в исходных запросах.
Недостатки
Основным недостатком схемы снежинки является то, что дополнительные уровни нормализации атрибутов усложняют объединения запросов к источникам данных по сравнению со звездной схемой. Схемы снежинки, в отличие от плоских измерений, представленных одной таблицей, подвергались значительной критике. Считается, что их целью является эффективное и компактное хранение нормализованных данных, однако это достигается за счет существенного снижения производительности при анализе соединений, необходимых для этого измерения. Этот недостаток мог уменьшиться с годами, благодаря улучшению производительности запросов в инструментах анализа.