Схема сніжинки
У комп'ютингу, схема сніжинки — це логічна структура таблиць в багатовимірній базі даних, що моделює зв'язки об'єктів. За формою ця схема подібна до сніжинки. Схема сніжинки представлена таблицями фактів, які знаходяться у центрі та пов'язані з численними розмірностями. «Snowflaking» — це метод нормалізації таблиць розмірностей в зіркоподібну схему. Коли вона повністю нормалізована по всім таблицям розмірностей, її структура нагадує сніжинку з таблицею фактів у центрі. Цей підхід ґрунтується на нормалізації таблиць розмірностей шляхом усунення атрибутів з низькою потужністю та утворенням окремих таблиць[1].
Схема сніжинки подібна до схеми зірки. Однак, в схемі сніжинки, розмірності нормалізовані в декілька пов'язаних таблиць, тоді як розмірності в зіркоподібній схеми при денормалізації представлені однією таблицею. Складна форма сніжинки виникає, коли розміри схеми сніжинки є складними, мають численні рівні відношень, а дочірні таблиці мають кілька батьківських таблиць («розгалужень»).
Загальне використовування
ред.Схеми зірки і сніжинок найбільш часто зустрічаються в багатовимірній багатовимірній базі даних і вітрині даних, де швидкість вибірки даних є більш важливою, ніж ефективність маніпуляцій з даними. Таким чином, таблиці в цих схемах не нормалізовані, і часто розроблені на рівні нормалізації, яка відома як третя нормальна форма.
Нормалізація даних та їх зберігання
ред.Нормалізація бази даних розбиває дані, щоб уникнути надмірності (дублювання) шляхом переміщення часто повторюваних груп даних в нових таблицях. Тому нормалізація має тенденцію до збільшення кількості таблиць, які повинні бути об'єднані для виконання даного запиту, але зменшує простір, необхідний для зберігання даних і кількості місць, де нормалізація повинна бути оновлена при зміні даних.
З точки зору зберігання, таблиці розмірностей, як правило, малі в порівнянні з таблицями фактів. Це часто зводить нанівець переваги потенційного накопичувального простору зіркоподібної схеми в порівнянні зі схемою сніжинки. Приклад: Один мільйон угод купівлі-продажу в 200 магазинах в 220 країнах призведе до 1,000,200 записів в зіркоподібну схему (1,000,000 записів в таблиці фактів і 200 записів в таблиці розмірів, де кожна країна буде перерахована в явному вигляді для кожного магазину в цій країні). Більш нормалізованою буде схема сніжинки з ключами країн, які відносяться до таблиці країн, схема буде складатися з тих же 1000000 записів у таблиці фактів, 200 записів у таблиці магазинів з посиланнями на польову таблицю з 220 записами. В цьому випадку, зіркоподібна схема, хоча додатково денормалізована, буде тільки зменшувати кількість або запис за допомогою (дуже незначною) коефіцієнта 0.9997800923612083 (= [1000000 + 200], поділених на [1000000 + 200 + 220])
Деякі розробники баз даних пішли на компроміс у шляху створення базової схеми сніжинки за допомогою методу, який виконує багато з необхідних об'єднань для імітації зіркоподібній схеми. Це забезпечує переваги у зберіганні, що досягається за рахунок нормалізації розмірів, а також легкість створення запитів, що забезпечує зіркоподібна схема. Компроміс в тому, що вимога включати автоматично основні сервера для виконання може привести до зниження продуктивності при запиті, а також до додаткових приєднань до таблиць, які не можуть бути необхідні для виконання певних запитів.
Переваги
ред.Схема сніжинки знаходиться в одній і тій самій сім'ї, як і логічна модель схеми зірки. Справді, схема зірки вважається окремим випадком схеми сніжинки. Схема сніжинки забезпечує деякі переваги в порівнянні з схемою зірки в певних ситуаціях, в тому числі:
- Деякі OLAP інструменти моделювання багатовимірної бази даних оптимізовані для схеми сніжинки.[2]
- Нормалізація атрибутів результатів для економії дискового простору, але збільшується складність вихідного запиту.
Недоліки
ред.Основним недоліком схеми сніжинки є те, що додаткові рівні атрибутів нормалізації додають складності вихідному запиту порівняно зі схемою зірки.
Схеми сніжинки, на відміну від плоских одномірних таблиць, були сильно розкритиковані. Їх метою вважається ефективне і компактне зберігання унормованих даних, але при значній вартості, низькій продуктивності при перегляді об'єднань потрібних в цьому вимірі.[3] Цей недолік може бути зменшений в наступні роки, так як було перше покращення роботи схеми, завдяки більш високій продуктивності запитів в рамках перегляду інструментів.
У порівнянні з високою нормалізацією транзакційної схеми, денормалізація схеми сніжинки знищує цілісність даних, наданих нормалізованими схемами. Завантаження даних в схему сніжинки необхідно сильно контролювати, щоб уникнути поновлення та появи аномалій.
Приклади
ред.Прикладом схеми, зображеної праворуч, є варіант прикладу зіркоподібної схеми, представленої в статті про схему зірки.
Наступним прикладом запит схеми сніжинки є еквівалент коду зіркоподібної схеми, який повертає загальну кількість проданих одиниць по марці і по країні за 1997 рік. Зверніть увагу, що запит схеми сніжинки вимагає набагато більше об'єднань, ніж версія зіркоподібній схеми, яка використовується для виконання простих запитів. Перевагою використання схеми сніжинки в цьому прикладі є те, що вимоги до пам'яті нижче, оскільки схема сніжинки усуває багато повторюваних значень для розмірностей.
SELECT
B.Brand,
G.Country,
SUM(F.Units_Sold)
FROM Fact_Sales F
INNER JOIN Dim_Date D ON F.Date_Id = D.Id
INNER JOIN Dim_Store S ON F.Store_Id = S.Id
INNER JOIN Dim_Geography G ON S.Geography_Id = G.Id
INNER JOIN Dim_Product P ON F.Product_Id = P.Id
INNER JOIN Dim_Brand B ON P.Brand_Id = B.Id
INNER JOIN Dim_Product_Category C ON P.Product_Category_Id = C.Id
WHERE
D.Year = 1997 AND
C.Product_Category = 'tv'
GROUP BY
B.Brand,
G.Country
Див. також
ред.Посилання
ред.- ↑ Paulraj Ponniah. Data Warehousing Fundamentals for IT Professionals. Wiley, 2010, pp. 29–32. ISBN 0470462078.
- ↑ Wilkie, Michelle (2009). Using SAS® OLAP Server for a ROLAP Scenario (PDF). SAS Global Forum 2009. Архів оригіналу (PDF) за 13 січня 2017. Процитовано 27 лютого 2013.
- ↑ Kimball, Ralph (1996). 6: The Big Dimensions. The Data Warehouse Toolkit (вид. 1st). Wiley. с. 95–98. ISBN 0-471-15337-0.
Do not snowflake your dimensions, even if they are large
Літературні джерела
ред.- Anahory, S.; D. Murray. Data Warehousing in the Real World: A Practical Guide for Building Decision Support Systems. Addison Wesley Professional.
- Kimball, Ralph (1996). The Data Warehousing Toolkit. John Wiley.
Додаткові посилання
ред.- «Why is the Snowflake Schema a Good Data Warehouse Design? [Архівовано 10 серпня 2017 у Wayback Machine.]» by Mark Levene and George Loizou
- Reverse Snowflake Joins [Архівовано 17 червня 2018 у Wayback Machine.]