Розріз даних

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

Розріз даних[1] (англ. View) в теорії баз даних — це збережений результатний набір запиту. Він доступний як віртуальна таблиця, що складається з результатів запиту. На відміну від звичайних таблиць в реляційній БД, розріз даних не є частиною схеми даних: це динамічна, віртуальна таблиця що є результатом обробки даних з бази. Зміна даних в таблицях бази даних змінює їх у відповідних розрізах.

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

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

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

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

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

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

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

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

  1. Е. М. Пройдаков, Л. А. Теплицький Англо-Український тлумачний словник з обчислювальної техніки, Інтернету і програмування. — СофтПрес. — С. 552. — ISBN 966-530-070-9.

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