Сервер даних: відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Рядок 27: Рядок 27:
Розглянемо на наступному прикладі: база даних містить таблицю клієнтів та таблицю замовлень, які пов'язані полем номера клієнта, що містяться в обох таблицях. Оскільки може бути більше одного замовлення від одного клієнта, співвідношення таблиць — «один-до-багатьох». Коли таблиці з'єднані, то таблиця клієнтів є батьківської, а таблиця замовлень — дочірньої. Якщо запис-батько стирається, а відповідні їй дочірні записи — немає, то кажуть, що дочірні записи «осиротіли».
Розглянемо на наступному прикладі: база даних містить таблицю клієнтів та таблицю замовлень, які пов'язані полем номера клієнта, що містяться в обох таблицях. Оскільки може бути більше одного замовлення від одного клієнта, співвідношення таблиць — «один-до-багатьох». Коли таблиці з'єднані, то таблиця клієнтів є батьківської, а таблиця замовлень — дочірньої. Якщо запис-батько стирається, а відповідні їй дочірні записи — немає, то кажуть, що дочірні записи «осиротіли».
Посилальна цілісність означає, що ні в одній таблиці не припустимі записи-«сироти».
Посилальна цілісність означає, що ні в одній таблиці не припустимі записи-«сироти».
Запис може осіротеть трьома способами:
Запис може осиротіти трьома способами:


1) батьківська запис видалена;
1) батьківська запис видалена;

Версія за 07:46, 5 березня 2015

Сервер баз даних виконує обслуговування та управління базою даних та відповідає за цілісність та збереження даних, а також забезпечує операції введення-виведення при доступі клієнта до інформації.

Архітектура клієнт-сервер складається з клієнтів та серверів. Основна ідея полягає в тому, щоб розміщувати сервери на потужних машинах, а додаткам, що використовують мовні компоненти СКБД, забезпечити доступ до них з менш потужних машин-клієнтів за допомогою зовнішніх інтерфейсів.

Мова SQL

Більшість СКБД використовують мову SQL (Structured Query Language — мова структурованих запитів), оскільки він зручний для опису логічних підмножин БД.
Призначення SQL:
-створення БД і таблиці з повним описом їх структури;
-виконання основних операцій маніпулювання даними (такі як вставка, модифікація та видалення даних з таблиць);
-виконання простих та складних запитів.
Одна з ключових особливостей мови SQL полягає в тому, що з його допомогою формуються запити, що описують яку інформацію з бази даних необхідно одержати, а шляхи вирішення цієї завдання програма визначає сама.


Збережені та приєднані процедури


Існують розширені версії мови SQL, які підтримують такі розширення, як збережені та розширені процедури, а також управління ходом програми через розгалуження та організацію циклів.
Збережені процедури — це попередньо відкомпілювалися пропозиції мови SQL, які зберігаються на сервері бази даних, що використовує мову SQL. Клієнт запускає збережену процедуру за допомогою команди EXECUTE<ім'я процедури >. Таким чином, по мережі передаються лише два слова. Оскільки ця процедура вже відкомпільована та оптимізована, серверу не потрібно витрачати час на компіляцію та оптимізацію.
В якості збережених процедур зазвичай використовуються часто виконувані запити.
Приєднані процедури (тригери) подібні збереженим процедурам та виконуються у відповідь на події, що відбуваються в БД. Коли з деякими додатками мови SQL пов'язана приєднана процедура, виконання цієї пропозиції завжди запускає цілу серію команд, що входять в цю процедуру. Приєднана процедура автоматично виконує одну чи більше пропозицій мови SQL, всякий раз, коли виконує пропозиції INSERT, UPDATE або DELETE.
Найважливіше застосування приєднаних процедур полягає в забезпеченні посилальної цілісності.

Операційне середовище серверів

Приклади серверів БД: SQL SERVER (Microsoft), SQL BASE SERVER, Oracle SERVER (Oracle Corporation), IBM DB2, Informix.Кожний сервер БД може працювати на певних типах комп'ютерів та мереж. Операційними системами серверів можуть бути MSDOS, OS/2, Xenix, Unix, Dec VMS/ Робочі станції користувачів зазвичай працюють під управління MSDOS, OS/2, Xenix, Unix.
Існують можливості змішаного використання різних ОС. Велика частина SQL-серверів може зберігати опис БД в системному каталозі, який зазвичай буває доступний користувачам. Для звернення до цього каталогу використовуються SQL-запити. Реляційні СКБД можуть використовувати інформацію, що зберігається в системному каталозі для оптимізації SQL-запитів.

Посилальна цілісність реляційних БД

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

1) батьківська запис видалена;

2) батьківська запис змінена таким чином, що зв'язок між «батьком» та «нащадками» втрачена;

3) введена дочірня запис без відповідної батьківської.

Підтримання посилальної цілісності можливо кількома способами:

1) Через ключі, що зберігаються в таблицях БД (батьківські таблиці містять первинні ключі, що представляють собою комбінації зовнішніх ключів, які можуть бути знайдені всередині кожної з дочірніх таблиць).

2) Використання приєднаних процедур — процедурна посилальна цілісність. Приєднані програми забезпечують посилальну цілісність за рахунок автоматичного виконання пропозицій SQL всякий раз, коли зустрічається одна з пропозицій UPDATE/INSERT або DELETE (або забороняється видалення батьківської записи, або стираються всі дочірні записи).

Транзакції та цілісність БД

Транзакція — сукупність логічно взаємопов'язаних запитів, спрямованих на узгоджене зміна деякого безлічі рядків в одній або декількох таблицях БД. Зазвичай при виконанні транзакцій оновлюється кілька таблиць та індексів, пов'язаних з цими таблицями. Для того щоб гарантувати синхронізацію поновлення та цілісність даних, в серверах зазвичай використовується принцип «все або нічого», що означає, що в БД вносяться або всі оновлення або жодне з них. З цією метою ведеться журнал транзакцій, в якому реєструється інформація про всі затребуваних змінах. Цей журнал забезпечує можливість «прокрутити назад» вчинені транзакції та відновити попередній стан БД. Це стає важливо, коли зміни в БД, передбачені в однієї транзакції, реалізовані лише частково, наприклад, через збій апаратури.

Узгодженість читання

Характерна для багатокористувацьких СКБД. Для її реалізації сервери володіють засобами автоматичного блокування.
Рівні, на яких блокується таблиця під час оновлень:
-вся таблиця;
-сторінка (фізичний блок розміром від 1 до 4 Кбайт, що містить кілька записів).

Тупикові ситуації

Сервери БД повинні мати засоби визначення стану взаємоблокування (dead lock). При виникненні такої ситуації виконання однієї з транзакцій переривається, виводячи іншу транзакцію зі стану вічного очікування. Перерване транзакція після виняток можливості її блокування виконується спочатку.

Схеми оптимізації робіт на мові SQL

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