Як вибрати сервер для баз даних SQL?

Як вибрати сервер для баз даних SQL?

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

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

Мова 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 ефективність запиту залежить від того, як він сформульований. У цьому випадку оптимізація залежить від кваліфікації програміста.

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

Переваги методу оптимізації за витратами: завдання визначення найкращого способу виконання запиту перекладається з користувача на процесор БД.

Недолік: знаходження оптимального методу саме по собі може зайняти багато часу.