Схема сніжинки

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Схема сніжинки є варіантом схеми зірки, який характеризується нормалізацією таблиць розмірностей.

У комп'ютингу, схема сніжинки — це логічна структура таблиць в багатовимірній базі даних, що моделює зв'язки об'єктів. За формою ця схема подібна до сніжинки. Схема сніжинки представлена таблицями фактів, які знаходяться у центрі та пов'язані з численними розмірностями. «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

Див. також

[ред. | ред. код]

Посилання

[ред. | ред. код]
  1. Paulraj Ponniah. Data Warehousing Fundamentals for IT Professionals. Wiley, 2010, pp. 29–32. ISBN 0470462078.
  2. Wilkie, Michelle (2009). Using SAS® OLAP Server for a ROLAP Scenario (PDF). SAS Global Forum 2009. Архів оригіналу (PDF) за 13 січня 2017. Процитовано 27 лютого 2013.
  3. 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.

Додаткові посилання

[ред. | ред. код]