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

[неперевірена версія][перевірена версія]
м (Додавання дати до шаблону)
 
(Не показані 6 проміжних версій 5 користувачів)
Рядок 1: Рядок 1:
'''Сервер баз даних''' виконує обслуговування та управління базою даних та відповідає за цілісність та збереження даних, а також забезпечує операції введення-виведення при доступі клієнта до інформації.
'''Сервер баз даних''' виконує обслуговування та управління базою даних та відповідає за цілісність та збереження даних, а також забезпечує операції введення-виведення при доступі клієнта до інформації.


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


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


== Збережені та приєднані процедури ==
== Збережені та приєднані процедури ==
<br/>Існують розширені версії мови SQL, які підтримують такі розширення, як збережені та розширені [[процедури]], а також управління ходом програми через розгалуження та організацію циклів.
Існують розширені версії мови SQL, які підтримують такі розширення, як збережені та розширені [[Процедура (програмування)|процедури]], а також управління ходом програми через розгалуження та організацію циклів.
<br/>Збережені процедури&nbsp;— це попередньо відкомпілювалися пропозиції мови SQL, які зберігаються на сервері бази даних, що використовує мову SQL. Клієнт запускає збережену процедуру за допомогою команди EXECUTE<ім'я процедури >. Таким чином, по мережі передаються лише два слова. Оскільки ця процедура вже відкомпільована та оптимізована, серверу не потрібно витрачати час на компіляцію та оптимізацію.
[[Збережена процедура|Збережені процедури]]&nbsp;— це попередньо відкомпільовані оператори мови SQL, які зберігаються на сервері бази даних, що використовує мову SQL. Клієнт запускає збережену процедуру за допомогою команди '''''EXECUTE'' <ім'я процедури>'''. Таким чином, по мережі передаються лише два слова. Оскільки ця процедура вже відкомпільована та оптимізована, серверу не потрібно витрачати час на компіляцію та оптимізацію.
<br/>В якості збережених процедур зазвичай використовуються часто виконувані запити.
<br/>Як збережені процедури зазвичай використовуються часто виконувані запити.
<br/>Приєднані процедури ([[тригер]]и) подібні збереженим процедурам та виконуються у відповідь на події, що відбуваються в БД. Коли з деякими додатками мови SQL пов'язана приєднана процедура, виконання цієї пропозиції завжди запускає цілу серію команд, що входять в цю процедуру. Приєднана процедура автоматично виконує одну чи більше пропозицій мови SQL, всякий раз, коли виконує пропозиції INSERT, UPDATE або DELETE.
<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.
* [[Microsoft SQL Server|SQL SERVER]] (Microsoft),
<br/>Існують можливості змішаного використання різних ОС. Велика частина SQL-серверів може зберігати опис БД в системному каталозі, який зазвичай буває доступний користувачам. Для звернення до цього каталогу використовуються SQL-запити. Реляційні СКБД можуть використовувати інформацію, що зберігається в системному каталозі для оптимізації SQL-запитів.
* SQL BASE SERVER,
* [[Oracle Database|Oracle SERVER]] (Oracle Corporation),
* [[IBM DB2]],
* [[Informix]].
Кожний сервер БД може працювати на певних типах комп'ютерів та мереж. Операційними системами серверів можуть бути MSDOS, OS/2, Xenix, Unix, Dec VMS. Робочі станції користувачів зазвичай працюють під управління MSDOS, OS/2, Xenix, Unix.
Існують можливості змішаного використання різних ОС. Велика частина SQL-серверів може зберігати опис БД в системному каталозі, який зазвичай буває доступний користувачам. Для звернення до цього каталогу використовуються SQL-запити. Реляційні СКБД можуть використовувати інформацію, що зберігається в системному каталозі для оптимізації SQL-запитів.


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


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

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

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


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


1) Через ключі, що зберігаються в таблицях БД (батьківські таблиці містять первинні ключі, що представляють собою комбінації зовнішніх ключів, які можуть бути знайдені всередині кожної з дочірніх таблиць).
* Через ключі, що зберігаються в таблицях БД (батьківські таблиці містять первинні ключі, що представляють собою комбінації зовнішніх ключів, які можуть бути знайдені всередині кожної з дочірніх таблиць).
* Використання приєднаних процедур&nbsp;— процедурна посилальна цілісність. Приєднані програми забезпечують посилальну цілісність за рахунок автоматичного виконання операторів SQL всякий раз, коли зустрічається один з операторів ''UPDATE/INSERT'' або ''DELETE'' (або забороняється видалення батьківського запису, або стираються всі дочірні записи).

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


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


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


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


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

{{rq|wikify|sources|recat}}


{{без джерел|дата=грудень 2014}}


[[Категорія:Системи керування базами даних]]
[[Категорія:Системи керування базами даних]]

Поточна версія на 23:55, 27 серпня 2019

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

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

Мова SQLРедагувати

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

  • створення БД і таблиці з повним описом їх структури;
  • виконання основних операцій маніпулювання даними (такі як вставка, модифікація та видалення даних з таблиць);
  • виконання простих та складних запитів.

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

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

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

Операційне середовище серверівРедагувати

Приклади серверів БД:

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

Посилальна цілісність реляційних БДРедагувати

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

  1. Батьківський запис видалений;
  2. Батьківський запис змінений таким чином, що зв'язок між «батьком» та «нащадками» втрачений;
  3. Введений дочірній запис без відповідного батьківського.

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

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

Транзакції та цілісність БДРедагувати

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

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

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

  • вся таблиця;
  • сторінка (фізичний блок розміром від 1 до 4 Кбайт, що містить кілька записів).

Тупикові ситуаціїРедагувати

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

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

Мета оптимізації полягає у забезпеченні якомога більш швидкого отримання відповіді на запит з мінімальним числом звернень до БД Існує два типи оптимізації на мові SQL:

  1. Оптимізація по синтаксису;
  2. Оптимізація за витратами;

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