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

нема опису редагування
'''Сервер баз даних''' виконує обслуговування та управління базою даних та відповідає за цілісність та збереження даних, а також забезпечує операції введення-виведення при доступі клієнта до інформації.
 
Архітектура [[клієнт-серверна архітектура|Архітектура клієнт-сервер]] складається з клієнтів та серверів. Основна ідея полягає в тому, щоб розміщувати сервери на потужних машинах, а додаткам, що використовують мовні компоненти СКБД, забезпечити доступ до них з менш потужних машин-клієнтів за допомогою зовнішніх інтерфейсів.
 
== Мова SQL ==
Більшість [[Система керування базами даних|СКБД]] використовують мову [[SQL]] ('''Structured Query Language''' — мова структурованих запитів), оскільки вінвона зручнийзручна для опису логічних підмножин БД.
<br/>Призначення SQL:
<br/>-:* створення БД і таблиці з повним описом їх структури;
<br/>-:* виконання основних операцій маніпулювання даними (такі як вставка, модифікація та видалення даних з таблиць);
<br/>-:* виконання простих та складних запитів.
<br/>Одна з ключових особливостей мови SQL полягає в тому, що з йогоїї допомогою формуються запити, що описують яку інформацію з бази даних необхідно одержати, а шляхи вирішення цієї завдання програма визначає сама.
 
== Збережені та приєднані процедури ==
<br/>Існують розширені версії мови SQL, які підтримують такі розширення, як збережені та розширені [[Процедура (програмування)|процедури]], а також управління ходом програми через розгалуження та організацію циклів.
<br/>{{Нп5|Збережені процедури|Збережені процедури|ru|Хранимая процедура}} &nbsp;— це попередньо відкомпілювалисявідкомпільовані пропозиціїоператори мови SQL, які зберігаються на сервері бази даних, що використовує мову SQL. Клієнт запускає збережену процедуру за допомогою команди '''''EXECUTE'' <ім'я процедури >'''. Таким чином, по мережі передаються лише два слова. Оскільки ця процедура вже відкомпільована та оптимізована, серверу не потрібно витрачати час на компіляцію та оптимізацію.
<br/>В якості збережених процедур зазвичай використовуються часто виконувані запити.
<br/>Приєднані процедури ([[тригер]]и) подібні збереженим процедурам та виконуються у відповідь на події, що відбуваються в БД. Коли з деякими додатками мови SQL пов'язана приєднана процедура, виконання цієїцього пропозиціїоператора завжди запускає цілу серію команд, що входять в цю процедуру. Приєднана процедура автоматично виконує одну чи більше пропозиційоператорів мови SQL, всякий раз, коли виконує пропозиціїоператори ''INSERT'', ''UPDATE'' або ''DELETE''.
<br/>Найважливіше застосування приєднаних процедур полягає в забезпеченні посилальної цілісності.
 
== Операційне середовище серверів ==
Приклади серверів БД:
Приклади серверів БД: 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 SERVER (Microsoft),
<br/>Існують можливості змішаного використання різних ОС. Велика частина SQL-серверів може зберігати опис БД в системному каталозі, який зазвичай буває доступний користувачам. Для звернення до цього каталогу використовуються SQL-запити. Реляційні СКБД можуть використовувати інформацію, що зберігається в системному каталозі для оптимізації SQL-запитів.
* SQL BASE SERVER,
* Oracle SERVER (Oracle Corporation),
* IBM DB2,
* Informix.
Приклади серверів БД: 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.
<br/>Існують можливості змішаного використання різних ОС. Велика частина SQL-серверів може зберігати опис БД в системному каталозі, який зазвичай буває доступний користувачам. Для звернення до цього каталогу використовуються SQL-запити. Реляційні СКБД можуть використовувати інформацію, що зберігається в системному каталозі для оптимізації SQL-запитів.
 
== Посилальна цілісність реляційних БД ==
Більшість SQL-серверів підтримують посилальну цілісність реляційних БД, що складаються з окремих таблиць, які можуть бути об'єднані на основі загальної інформації.
<br/>Розглянемо на наступному прикладі: база даних містить таблицю клієнтів та таблицю замовлень, які пов'язані полем номера клієнта, що містяться в обох таблицях. Оскільки може бути більше одного замовлення від одного клієнта, співвідношення таблиць&nbsp;— «один-до-багатьох». Коли таблиці з'єднані, то таблиця клієнтів є батьківськоїбатьківською, а таблиця замовлень&nbsp;— дочірньоїдочірньою. Якщо запис-батько стирається, а відповідні їй дочірні записи&nbsp;— немаєні, то кажуть, що дочірні записи «осиротіли».
Посилальна цілісність означає, що ні в одній таблиці не припустимі записи-«сироти».
<br/>Запис може осиротіти трьома способами:
 
1)# батьківськаБатьківський запис видаленавидалений;
2)# батьківськаБатьківський запис зміненазмінений таким чином, що зв'язок між «батьком» та «нащадками» втраченавтрачений;
 
# Введений дочірній запис без відповідного батьківського.
2) батьківська запис змінена таким чином, що зв'язок між «батьком» та «нащадками» втрачена;
 
3) введена дочірня запис без відповідної батьківської.
 
Підтримання посилальної цілісності можливо кількома способами:
 
1)* Через ключі, що зберігаються в таблицях БД (батьківські таблиці містять первинні ключі, що представляють собою комбінації зовнішніх ключів, які можуть бути знайдені всередині кожної з дочірніх таблиць).
2)* Використання приєднаних процедур&nbsp;— процедурна посилальна цілісність. Приєднані програми забезпечують посилальну цілісність за рахунок автоматичного виконання пропозиційоператорів SQL всякий раз, коли зустрічається однаодин з пропозиційоператорів ''UPDATE/INSERT'' або ''DELETE'' (або забороняється видалення батьківськоїбатьківського записизапису, або стираються всі дочірні записи).
 
2) Використання приєднаних процедур&nbsp;— процедурна посилальна цілісність. Приєднані програми забезпечують посилальну цілісність за рахунок автоматичного виконання пропозицій SQL всякий раз, коли зустрічається одна з пропозицій UPDATE/INSERT або DELETE (або забороняється видалення батьківської записи, або стираються всі дочірні записи).
 
== Транзакції та цілісність БД ==
[[Транзакція (інформатикабази даних)|Транзакція]]&nbsp;— сукупність логічно взаємопов'язаних запитів, спрямованих на узгодженеузгоджену зміназміну деякогодеякої безлічімножини рядків в одній або декількох таблицях БД. Зазвичай при виконанні транзакцій оновлюється кілька таблиць та індексів, пов'язаних з цими таблицями. Для того щоб гарантувати синхронізацію поновлення та цілісність даних, в серверах зазвичай використовується принцип «все або нічого», що означає, що в БД вносяться або всі оновлення або жодне з них. З цією метою ведеться журнал транзакцій, в якому реєструється інформація про всі затребуванихзатребувані змінахзміни. Цей журнал забезпечує можливість «прокрутити назад» вчиненіздійснені транзакції та відновити попередній стан БД. Це стає важливо, коли зміни в БД, передбачені в однієїодній транзакції, реалізовані лише частково, наприклад, через збій апаратури.
 
== Узгодженість читання ==
Характерна для багатокористувацьких СКБД. Для її реалізації сервери володіють засобами автоматичного блокування.
<br/>Рівні, на яких блокується таблиця під час оновлень:
<br/>-:* вся таблиця;
<br/>-:* сторінка (фізичний блок розміром від 1 до 4 Кбайт, що містить кілька записів).
 
== Тупикові ситуації ==
Сервери БД повинні мати засоби визначення стану взаємоблокування (dead lock). При виникненні такої ситуації виконання однієї з транзакцій переривається, виводячи іншу транзакцію зі стану вічного очікування. ПерерванеПерервана транзакція після винятоквиключення можливості її блокування виконується спочатку.
 
== Схеми оптимізації робіт на мові SQL ==
Мета оптимізації полягає у забезпеченні якомога більш швидкого отримання відповіді на запит з мінімальним числом звернень до БД
<br/>Існує два типи оптимізації на мові SQL:
<br/>-оптимізація# Оптимізація по синтаксису;
<br/>-оптимізація# Оптимізація за витратами;
<br/>Оптимізація по синтаксису використовує той факт, що в мові SQL ефективність запиту залежить від того, як він сформульований. В цьому випадку оптимізація залежить від кваліфікації програміста.
<br/>При оптимізації за витратами відбувається збір відомостей про БД&nbsp;— числі таблиць, зокремачислі рядків, типі даних в кожному рядку, доступності індексування для конкретного стовпця, тощо. оптимізаторОптимізатор використовує цю інформацію для вироблення найкращого плану обробки запитів.
<br/>Переваги методу оптимізації за витратами: завдання визначення найкращого способу виконання запиту перекладається з користувача на процесор БД.
<br/>Недолік: знаходження оптимального методу само по собі може зайняти багато часу.
 
{{rq|wikify|sources|recat}}
67

редагувань