Розріз даних

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

Розріз (предста́влення, подання́) да́них[1][2] (англ. View) у реляційних базах даних — збережений результатний набір запиту. Зміна даних у таблицях бази даних змінює їх у відповідних розрізах.

Є два види розрізів: віртуальний (англ. virtual view) та матеріалізований (англ. materialized view).

  • Віртуальний розріз не зберігає результат виконання запиту в базі даних, а щоразу отримується динамічно. Він доступний як віртуальна таблиця, що складається з результатів запиту. На відміну від звичайних таблиць в реляційній БД, зріз даних не є частиною схеми даних: це динамічна, віртуальна таблиця що є результатом запиту до даних з бази.
  • Матеріалізований розріз зберігається як звичайна таблиця. Його слід оновлювати при кожній зміні даних у таблицях, від яких він залежить. Відповідно оновлення таблиць, від яких він залежить, буде проводитись із затримкою. Як варіант вирішення цієї проблеми можна вказати, що матеріалізований зріз слід оновлювати періодично (щодня, щогодини тощо). Таким чином у матеріалізованих зрізах будуть зберігатися майже актуальні дані зі швидким доступом.

Спосіб створення і вміст розрізу[ред. | ред. код]

Типовим способом створення розрізу даних для СУБД (що підтримують мову запитів SQL), є зв'язування зрізу з певним SQL-запитом. Відповідно, вміст зрізу — це результат виконання цього запиту, а можливості побудови зрізу обмежуються лише ступенем складності SQL-діалекту цієї СУБД. Так, для типових СУБД, таких як PostgreSQLInterbaseFirebirdMicrosoft SQL ServerOracle, зріз може містити:

  • підмножину записів з таблиці БД, що відповідає певним умовам (наприклад, при наявності однієї таблиці «Люди» можна створити два розрізи даних «Чоловіки» і «Жінки», в кожному з яких будуть записи тільки про людей відповідної статі);
  • результат обробки даних у таблиці за певними правилами (наприклад, розріз може містити всі дані реальної таблиці, але з приведенням рядків у верхній регістр і обрізаними початковими й кінцевими пробілами);
  • результат об'єднання (join) кількох таблиць (наприклад, за наявності таблиць «Люди», «Адреса», «Вулиця», «Фірма та організація» можна побудувати розріз, який буде виглядати як таблиця, яка для кожної людини містить його особові дані, як то адреса, місце проживання, назва організації, де він працює, і адресу організації);
  • результат об’єднання кількох таблиць з однаковими назвами й типами полів, коли в розріз потрапляють всі записи кожної з таблиць, які зливаються (можливо, за винятком повторів);
  • результат групування записів у таблиці (наприклад, за наявності таблиці «витрати» з записами по кожному платежу можна побудувати розріз, що містить суму коштів, витрачених на кожну окрему статтю);

Зрізи даних використовуються в запитах до БД так само, як і звичайні таблиці. У разі SQL-СУБД назва зрізу може перебувати в SQL-запиті на місці назви таблиці (в частині FROM). Запит з розрізом виконується СУБД так само, як запит, в якому на місці назви зрізу перебуває підзапит, який визначає цей зріз. При цьому СУБД з розвиненими можливостями оптимізації перед виконанням запиту може проводити спільну оптимізацію (запиту верхнього рівня і запиту, що визначає зріз даних) з метою мінімізації витрат на вибірку даних.

  • Розріз приховує від прикладної програми складність запитів і саму структуру таблиць БД. Коли програмі потрібні певні дані з таблиці, вона робить найпростіший запит з підготовленого зрізу. При цьому навіть якщо для отримання цих даних потрібен досить складний запит, сама програма цього запиту не містить.
  • Використання розрізу даних дозволяє відокремити прикладну схему даних від схеми зберігання. З погляду програми структура даних відповідає тим зрізам, з яких програма ці дані отримує. У базі дані можуть зберігатися зовсім іншим чином, досить лише створити зріз, що відповідає потребам програми. Поділ дозволяє незалежно модифікувати програму і схему зберігання даних: як при зміні структури фізичних таблиць, так і при зміні програми досить змінити зрізи відповідним чином. Зміна програми не зачіпає фізичні таблиці, а зміна фізичної структури таблиць не вимагає коригування програми.
  • За допомогою розрізів забезпечується ще один рівень захисту даних. Користувачеві можуть надаватися права тільки на зріз, завдяки чому він не буде мати доступу до даних, що зберігаються в таблицях.
  • Оскільки SQL-запит, що вибирає дані розрізу, зафіксований на момент його створення, СУБД отримує можливість застосувати до цього запиту оптимізацію або попередню компіляцію, що позитивно позначається на швидкості виконання запиту, у порівнянні з прямим виконанням того ж запиту зі сторонньої програми.

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

  1. Е. М. Пройдаков, Л. А. Теплицький. Англо-Український тлумачний словник з обчислювальної техніки, Інтернету і програмування. — СофтПрес, 2005. — С. 552. — ISBN 966-530-070-9.
  2. https://e2u.org.ua/s?w=view&dicts=2&highlight=on&

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