Секція (бази даних)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Секція (англ. partition) — поділ логічної бази даних або її складових елементів на окремі незалежні частини. Розбиття бази даних зазвичай виконується з причин керованості, продуктивності чи доступності, або для балансування навантаження.

Переваги багатьох секцій[ред. | ред. код]

Популярним застосування розбиття (англ. partitioning) є в розподілених системах керування базами даних. Кожна секція може поширюватися на декілька вузлів, і користувачі на вузлі можуть виконувати локальні транзакції на секції. Це підвищує продуктивність для місць, які мають регулярні транзакції з залученням певних розрізів даних, зберігаючи доступність і безпеку.

Критерії розбиття[ред. | ред. код]

Поточні висококласні реляційні системи керування базами даних передбачають різні критерії розділення бази даних. Вони беруть ключ розбиття (англ. partitioning key) та призначають секцію на основі певного критерію. Поширеними критеріями є:

  • Діапазонне розбиття (англ. range partitioning) — обирає секцію визначенням, чи ключ розбиття перебуває всередині певного діапазону. Прикладом може бути секція для всіх рядків, де колонка zipcode має значення між 70000 і 79999. Воно розподіляє кортежі на основі інтервалів (діапазонів) значення деякого атрибуту. На додачу до підтримки запитів точної відповідності (як у гешуванні), воно добре підходить для запитів діапазонних. Наприклад, запит із предикатом «A між A1 і A2» може оброблятися лише вузлом(-ами), що містять кортежі.
  • Спискове розбиття (англ. list partitioning) — секція, що призначається списком значень. Якщо ключ розбиття має одне з цих значень, секцію обрано. Наприклад, всі рядки, де колонка Country є одним з Ісландія, Норвегія, Швеція, Фінляндія чи Данія, можуть будувати секцію для нордичних країн.
  • Складене розбиття (англ. composite partitioning) — дозволяє певні комбінування вищенаведених схем розбиття, наприклад, спочатку діапазонного, а потім геш-розбиття. Послідовне гешування[en] може розглядатися складеним із геш- і спискового розбиття, де геш зменшує обсяг ключа до розміру, що може перелічуватися.
  • Кругове розбиття (англ. round-robin partitioning) — найпростіша стратегія, що забезпечує рівномірний розподіл даних. З n секціями, i-й кортеж у порядку вставки призначається секції (i mod n). Ця стратегія дозволяє паралельне виконання послідовного доступу до відношення. Однак, прямий доступ до окремих кортежів на основі предикату вимагає доступу до всього відношення.
  • Геш-розбиття (англ. hash partitioning) — застосовує геш-функцію до деякого атрибуту, що дає номер секції. Ця стратегія дозволяє обробляти запити точної відповідності на атрибут вибірки в точності одним вузлом, а всі інші запити обробляти паралельно всіма вузлами.

Способи розбиття[ред. | ред. код]

Детальніші відомості з цієї теми ви можете знайти в статті Шард (архітектура баз даних)[en].

Розбиття може здійснюватися або побудовою окремих малих баз даних (кожна з власними таблицями, індексами та журналами транзакцій), або розділенням вибраних елементів, наприклад, просто однієї таблиці.

Горизонтальне розбиття (англ. horizontal partitioning) залучає вставку різних рядків у різні таблиці. Наприклад, замовники з ZIP-кодами менше за 50000 зберігаються в CustomersEast, тоді як замовники з ZIP-кодами понад 50000 зберігаються в CustomersWest. Тоді двома таблицями розділів є CustomersEast і CustomersWest, тоді як для забезпечення повного перегляду всіх замовників над ними обома може бути створено розріз з об'єднанням.

Вертикальне розбиття (англ. vertical partitioning) залучає створення таблиць із меншою кількістю колонок та застосування додаткових таблиць для зберігання решти колонок[1]. Нормалізація також залучає таке розділення колонок між таблицями, але вертикальне розбиття виходить за рамки цього та розбиває навіть вже нормалізовані колонки. Для реалізації вертикального розбиття також можуть використовуватися різні фізичні носії; наприклад, одним зі способів вертикального розбиття є зберігання на інших пристроях нечасто використовуваних або дуже широких колонок. Здійснюваний явно чи неявно, цей тип розбиття називається «розділенням рядків» (англ. row splitting, рядок розділено його колонками). Поширеною формою вертикального розбиття є відділення динамічних даних (повільних для пошуку) від статичних даних (швидких для пошуку) до таблиці, де динамічні дані не використовуються так часто, як статичні. Створення розрізу над двома новоствореними таблицями відтворює початкову таблицю зі втратою продуктивності, проте, продуктивність зростатиме при доступі до статичних даних, наприклад, для статистичного аналізу.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Vertical Partitioning Algorithms for Database Design. — Стенфордський університет, 1984. — DOI:10.1.1.97.8306. Архівовано з джерела 20 жовтня 2012. Процитовано 26 березня 2018.