Схема снежинки - Snowflake schema
Эта статья нужны дополнительные цитаты для проверка.Октябрь 2012 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В вычисление, а схема снежинки это логическое расположение столов в многомерная база данных так что отношения сущности диаграмма напоминает снежинка форма. Схема снежинки представлена централизованными таблицы фактов которые подключены к нескольким размеры.[нужна цитата ]. «Снежинка» - это метод нормализации таблиц измерений в звездная схема. Когда он полностью нормализуется по всем таблицам измерений, результирующая структура напоминает снежинку с таблица фактов в середине. Принцип «снежинки» заключается в нормализации таблиц измерений путем удаления атрибутов с низкой мощностью и формирования отдельных таблиц.[1]
Схема снежинки похожа на схему звезды. Однако в схеме снежинки размеры нормализованный в несколько связанных таблиц, тогда как измерения звездообразной схемы денормализованы, и каждое измерение представлено одной таблицей. Сложная форма снежинки возникает, когда размеры схемы снежинки тщательно продуманы, имеют несколько уровней отношений, а дочерние таблицы имеют несколько родительских таблиц («развилки на дороге»).
Общее использование
Схемы звезды и снежинки чаще всего встречаются в размерных хранилища данных и витрины данных где скорость получения данных более важна, чем эффективность манипуляций с данными. Таким образом, таблицы в этих схемах не сильно нормализованы и часто разрабатываются на уровне нормализации, не превышающем третья нормальная форма.[2]
Нормализация и хранение данных
Нормализация разбивает данные, чтобы избежать избыточности (дублирования), перемещая часто повторяющиеся группы данных в новые таблицы. Таким образом, нормализация имеет тенденцию к увеличению количества таблиц, которые необходимо объединить для выполнения данного запроса, но уменьшает пространство, необходимое для хранения данных, и количество мест, где его необходимо обновить, если данные изменятся.
С точки зрения пространственного хранения таблицы измерений обычно малы по сравнению с таблицами фактов. Это часто сводит на нет потенциальные преимущества использования пространства для хранения звездообразной схемы по сравнению со схемой «снежинка». Пример. Один миллион транзакций продаж в 300 магазинах в 220 странах приведет к 1 000 300 записей в звездообразной схеме (1 000 000 записей в таблице фактов и 300 записей в таблице измерений, где каждая страна будет явно указана для каждого магазина в этой стране). Более нормализованная схема «снежинка» с ключами стран, относящимися к таблице стран, будет состоять из той же таблицы фактов 1000000 записей, таблицы магазина на 300 записей со ссылками на таблицу стран с 220 записями. В этом случае звездная схема, хотя и в дальнейшем денормализована, уменьшит количество или записей только на (пренебрежимо малый) коэффициент ~ 0,9998 (= [1000000 + 300] разделить на [1000000 + 300 + 220])
Некоторые разработчики баз данных идут на компромисс, создавая базовую схему снежинки с взгляды построенные поверх него, которые выполняют многие из необходимых соединений для имитации звездообразной схемы. Это обеспечивает преимущества хранения, достигаемые за счет нормализации измерений с легкостью запросов, которую предоставляет звездная схема. Компромисс заключается в том, что требование, чтобы сервер автоматически выполнял базовые соединения, может привести к снижению производительности при запросах, а также к дополнительным соединениям с таблицами, которые могут не потребоваться для выполнения определенных запросов.[нужна цитата ]
Преимущества
Схема снежинки принадлежит к тому же семейству, что и звездная схема логическая модель. Фактически, звездная схема считается частным случаем схемы снежинки. Схема снежинки дает некоторые преимущества перед звездная схема в определенных ситуациях, в том числе:
- Немного OLAP инструменты моделирования многомерных баз данных оптимизированы для схем снежинок.[3]
- Нормализация Атрибуты приводят к экономии места, а компромисс заключается в дополнительной сложности соединений исходного запроса.
Недостатки
Основным недостатком схемы «снежинка» является то, что дополнительные уровни нормализации атрибутов усложняют соединения исходного запроса по сравнению с звездная схема.
Схемы снежинок, в отличие от плоских измерений одной таблицы, подвергались резкой критике. Предполагается, что их целью является эффективное и компактное хранилище нормализованных данных, но это достигается значительной ценой низкой производительности при просмотре объединений, необходимых в этом измерении.[4] Этот недостаток, возможно, уменьшился с тех пор, как он был впервые обнаружен, благодаря лучшей производительности запросов в инструментах просмотра.
По сравнению с очень нормализованный транзакционная схема, схема снежинки денормализация удаляет гарантии целостности данных, обеспечиваемые нормализованными схемами.[нужна цитата ] Загрузка данных в схему снежинки должна строго контролироваться и управляться, чтобы избежать аномалий обновления и вставки.
Примеры
Пример схемы, показанный справа, представляет собой снежную версию примера звездной схемы, представленной в звездная схема статья.
Следующий пример запроса представляет собой схему снежинки, эквивалентную примерному коду схемы звезды, который возвращает общее количество телевизоров, проданных по брендам и странам за 1997 год. Обратите внимание, что для запроса схемы снежинки требуется намного больше соединений, чем для версии схемы звезды, чтобы выполнить даже простой запрос. Преимущество использования схемы «снежинка» в этом примере состоит в том, что требования к хранилищу ниже, поскольку схема «снежинка» устраняет множество повторяющихся значений из самих измерений.
ВЫБРАТЬ B.Марка, грамм.Страна, СУММ(F.Проданных единиц)ИЗ Факт_Продажи FВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ Dim_Date D НА F.Date_Id = D.ИдентификаторВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ Dim_Store S НА F.Store_Id = S.ИдентификаторВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ Dim_Geography грамм НА S.Geography_Id = грамм.ИдентификаторВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ Dim_Product п НА F.Идантификационный номер продукта = п.ИдентификаторВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ Dim_Brand B НА п.Brand_Id = B.ИдентификаторВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ Dim_Product_Category C НА п.Product_Category_Id = C.ИдентификаторКУДА D.Год = 1997 И C.Категория продукта = 'телевидение'ГРУППА К B.Марка, грамм.Страна
Смотрите также
Рекомендации
- ^ Paulraj Ponniah. Основы хранилищ данных для ИТ-специалистов. Wiley, 2010, стр. 29–32. ISBN 0470462078.
- ^ Хан, Цзявэй (2012). Интеллектуальный анализ данных - концепции и методы. Массачусетс, США: издательство Morgan Kauffmann Publishers. ISBN 9780123814791.
- ^ Уилки, Мишель (2009). «Использование SAS® OLAP Server для сценария ROLAP» (PDF). Глобальный форум SAS 2009. Получено 2013-02-27.
- ^ Кимбалл, Ральф (1996). «6: Большие измерения». Набор инструментов хранилища данных (1-е изд.). Вайли. стр.95–98. ISBN 0-471-15337-0.
Не делайте снежинок свои габариты, даже если они большие
Библиография
- Анахори, С .; Д. Мюррей. Хранилище данных в реальном мире: практическое руководство по созданию систем поддержки принятия решений. Эддисон Уэсли Профессионал.
- Кимбалл, Ральф (1996). Набор инструментов для хранилищ данных. Джон Вили.