- •Тема 3. Архітектура субд
- •Тема 3. Архітектура субд 1
- •3.1. Використання та типові складові субд
- •3.1.1. Огляд варіанту структури субд
- •3.1.1.1. Команди мови визначення даних та обробки запитів
- •Обробка запитів
- •3.1.1.2. Процесор запитів
- •3.1.1.3. Збереження файлів на диску
- •3.1.1.4. Менеджери буферів та зберігання даних
- •3.1.1.5. Обробка транзакцій
- •3.1.1.6. Acid - властивості транзакцій
- •3.2. Субд навігаційного типу. Ієрархічні. Сітьові.
- •3.2.1. Навігаційні бази даних
- •3.2.2. Ієрархічні бази даних
- •3.2.2.1. Керуюча частина ієрархічної моделі
- •3.2.2.2. Приклади типових операторів пошуку даних
- •3.2.2.5. Відомі ієрархічні субд
- •3.2.3. Сітьові бази даних
- •3.2.3.1. Керуюча частина мережевої моделі
- •3.2.3.1. Приклади мережевих скбд
- •3.3. Субд реляційного типу.
- •3.3.1. Реляційна база даних
- •3.3.2. Відношення
- •3.3.3. Нормалізація
- •3.4. Об’єктно-орієнтовані бд.
- •3.4.2. Об'єктно-орієнтовані бд
- •3.4.2. Об'єктно-реляційні бд
- •3.4.3. Переваги моделі ообд
- •1. Визначення призначених для користувача абстракцій
- •2. Полегшене проектування деяких зв'язків
- •3. Відсутність потреби у визначенні ключів
- •4. Наявність предикатів порівняння
- •5. Менша потреба в з'єднаннях
- •6. Виграш в продуктивності -?
- •7. Підтримка версій і тривалих транзакцій
- •8. Об'єктна алгебра
- •3.4.4. Недоліки моделі ообд
- •1. Відсутність інтероперабельності між рбд і ообд
- •2. Недостатність засобів для оптимізації запитів
- •3. Відсутність засобів забезпечення запитів
- •4. Відсутність підтримки подань
- •3.4.6. Стандарт odmg.
- •3.4.7. Об'єктні розширення реляційних субд. Мова Sql-3.
- •3.4.8. Об'єктно-реляційні субд
3.1.1.2. Процесор запитів
Наведемо приклад процесору запитів в реляційній СУБД. В ній процесор запитів (query processor) визначає продуктивність СУБД. На рис.3.2 він представлений двома компонентами:
Компілятор запитів (query compiler) транслює запит у внутрішній формат СУБД – план запиту (query plan), тобто послідовність інструкцій, що підлягає виконанню. Компілятору запитів складається з трьох частин:
Синтаксичного аналізатора запитів (query parser), що на основі тексту запиту створює деревовидну структуру даних;
Препроцесора запитів (query preprocessor), який виконує семантичний аналіз запиту (перевірку існування відношень та атрибутів у запиті), та перетворення дерева, побудованого аналізатором, у дерево алгебраїчних операторів (у сенсі реляційної алгебри), які відповідають плану запиту;
Оптимізатора запитів (query optimizer), який виконує перетворення плану запиту в найбільш ефективну послідовність операцій над даними.
Оптимізатор запитів для прийняття рішень користується метаданими та статистичною інформацією, що накопичена в СУБД. Наприклад, на його рішення суттєво впливає наявність індексу – спеціальної структури даних, яка зберігає певні значення (ключі або відносні адреси) для порцій даних.
Виконуюча машина (execution engine) відповідає за виконання кожної операції плану запиту. Під час роботи вона спілкується з більшістю інших компонентів СУБД – напряму або через буфери. Для обробки даних виконуюча машина читає дані в буфери. При цьому вона „спілкується” з планувальником завдань, уникаючи звернення до блокованої інформації, а також із менеджером протоколювання, для фіксації змін у протоколі.
Рис.3.3. Обробка запитів
Виконуюча машина направляє групу запитів на отримання невеликої порції даних (як правило, рядків (кортежів) таблиці (відношення) менеджеру ресурсів, який обізнаний в особливостях розміщення інформації в файлах даних, що містять таблиці, у форматах і розмірах записів у таблицях і у структурах індексів (indexes), які забезпечують суттєве прискорення пошуку даних.
3.1.1.3. Збереження файлів на диску
Інформація, що зберігається в БД, зазвичай розташовується на носіях вторинних пристроїв зберігання (secondary storage device). На цих пристроях «поверхня» розподілена на дискові блоки (disk blocks) – безперервні ділянки, здатні зберігати велику кількість байтів інформації, до 2**12 або 2**14 (4096 або 16384).
Рис.3.4. – Структура диску
Файл зберігається в кількох блоках. В кінці кожного блоку, крім останнього, записана адреса (№ сектора + № циліндра ) наступного блоку.
3.1.1.4. Менеджери буферів та зберігання даних
Корисна обробка інформації відбувається в оперативній пам’яті (ОП). Задача управління розміщенням інформації на диску і обміну нею між диском і ОП покладається на менеджер зберігання даних (storage manager).
У простій СУБД ці функції можуть бути покладені на файлову систему, яка обслуговується операційною системою. Задля ефективності СУБД зазвичай (у будь-якому разі, за певних обставин) самостійно управляє розміщенням даних на дисках.
У відповідь на запит менеджера буферів менеджер зберігання даних визначає розміщення файлів на диску та отримує набір блоків диска, які містять запитаний файл чи його частину.
Менеджер буферів (buffer manager) відповідальний за розбиття доступної оперативної пам’яті на буфери (buffers) – ділянки-сторінки(pages), куди може бути поміщений зміст блоків. Усі компоненти СУБД, які звертаються до дискової інформації, взаємодіють з буферами та менеджером буферів – або безпосередньо, або за допомогою виконуючої машини. Дані, необхідні компонентам системи, можуть відноситись до категорій:
Власне дані – зміст БД як такої.
Метадані – опис схеми (логічної структури) БД, введених обмежень і т.д.
Статистика – інформація, зібрана СУБД, про властивості даних, як-от розміри певних відношень, про імовірнісний розподіл збережених значень і т.д.
Індекси – структури даних для ефективного доступу до інформації в БД.
Рис.3.5. Діаграма послідовності звертання виконуючої машини до диску
