
- •Вступ до баз даних. Загальна характеристика основних понять
- •1.1. Розвиток основних понять представлення даних
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 7
- •Формалізація реляційної моделі
- •7.1. Формалізований опис відношень і схеми відношень
- •7.2. Маніпулювання даними в реляційній моделі
- •7.3. Операції реляційної алгебри
- •Лекція 8
- •Використання формального апарату для оптимізації схем відношень
- •8.1. Проблема вибору раціональних схем відношень
- •8.2. Функціональні залежності (залежності між атрибутами відношення)
- •8.3. Декомпозиція схеми відношення
- •8.4 .Вибір раціонального набору схем відношень шляхом нормалізації
- •8.5. Приклад нормалізації до 3нф
- •8.6. Цілісна частина реляційної моделі. Реалізація умови цілісності даних в сучасних субд
- •Лекція 9
- •Фізичні моделі даних (внутрішній рівень)
- •9.1. Структура пам'яті еом
- •9.2. Представлення екземпляра логічного запису
- •9.3. Організація обміну між оперативною і зовнішньою пам'яттю
- •9.4. Структури зберігання даних у зовнішній пам'яті еом
- •9.4.1. Послідовне розміщення фізичних записів
- •Пошук запису із заданим значенням ключа
- •9.4.2. Розміщення фізичних записів у вигляді спискової структури
- •Пошук запису із заданим значенням ключа
- •9.4.3. Використання індексів (індексування)
- •Пошук і читання запису із заданим значенням ключа
- •Модифікація (коректування) запису
- •Видалення запису
- •Додавання запису
- •9.4.5. Розміщення записів з використанням хешування
- •Пошук запису із заданим значенням ключа і читання
- •Модифікації запису
- •Видалення запису
- •Додавання запису
- •9.4.6. Комбіновані структури зберігання
- •Лекція 10
- •Структура сучасної субд на прикладі Microsoft sql Server 2008
- •10.1 Загальна структура субд
- •10.2. Архітектура бази даних. Логічний рівень
- •Тип даних hierarchyid
- •Просторові типи даних
- •Індекси
- •Представлення
- •Складки
- •Обмеження
- •Правила
- •Значення за замовчуванням
- •10.3. Архітектура бази даних. Фізичний рівень
- •Файли і файлові групи
- •Сторінки і екстенти
- •Сторінки файлів даних
- •Організація таблиць та індексів
- •Управління роботою з екстентами і вільним місцем
- •Відстежування вільного місця
- •Лекція 11
- •Програмне забезпечення роботи з сучасними базами даних
- •11.1. Основні завдання програмного забезпечення баз даних
- •11.2. Проблеми створення і ведення реляційних баз даних
- •11.3. Поняття мови sql і його основні частини
- •11.3.1. Історія виникнення і стандарти мови sql
- •11.3.2. Переваги мови sql
- •11.3.2. Загальна характеристика sql
- •Термінологія
- •Різновиди sql
- •Лекція 12
- •Основні оператори мови sql. Інтерактивний sql
- •12.1. Загальне уявлення про основні оператори мови sql
- •12.2 Інтерактивний режим роботи з sql (інтерактивна sql)
- •12.3. Використання мови sql для вибору інформації з таблиці
- •12.4. Використання sql для вибору інформації з декількох таблиць
- •12.5. Використання sql для вставки, редагування і видалення даних у таблицях
- •Лекція 13
- •Використання мови sql у прикладних програмах
- •13.1. Програмний (вбудований) sql
- •13.2. Статичний sql
- •13.3. Динамічний sql
- •13.4. Інтерфейси програмування додатків (api). Db‑Library, odbc, oci, jdbc
- •Протокол odbc
- •Протокол jdbc
- •Бібліотека db-Library
- •Лекція 14
- •Напрями розвитку баз даних
- •14.1. Об'єктно-орієнтований підхід до організації баз даних
- •Об'єктно-орієнтоване програмування
- •Об'єктно-орієнтовані бази даних
- •Об'єктно-реляційні субд
- •14.2. Розподілені бази даних
- •14.3. Сховища даних
- •Основи криптології
9.4. Структури зберігання даних у зовнішній пам'яті еом
У сучасних СУБД найбільшого поширення набули табличні моделі даних. У зв'язку з цим, в цій лекції ми говоритимемо про структури зберігання для табличної моделі. Проте відзначимо, що деякі із структур зберігання, які ми зараз розглянемо, можуть використовуватися і для представлення мережевих та ієрархічних моделей.
Як зовнішню пам'ять ми розглядаємо найбільш поширену в сучасних ЕОМ пам'ять прямого доступу. Пам'ять прямого доступу дає можливість звернення до будь-якого запису, якщо відома її адреса. Для спрощення викладу ми не конкретизуватимемо ряд службових полів, які містить фізичний запис, і їх розгляд пропустимо.
9.4.1. Послідовне розміщення фізичних записів
У цій структурі зберігання записів у пам'яті розміщуються послідовно один за одним. Як вже наголошувалося, вважаємо, що всі записи мають однакову довжину. Фізична адреса запису може бути легко вирахувана за номером запису (для обчислення необхідно знати формат відповідного фізичного запису).
Фізичний запис з номером I містить логічні записи з номерами
(I – 1) k+1
(I – 1) k+2
...
(I – 1) k+k
I = 1, 2, ..., [N/k];
знаком [N/k] позначимо найближче ціле, більше або рівне N/k, ‑ ціле зверху.
Розглянемо, як реалізуються основні елементарні операції моделі даних у цій структурі зберігання, і оцінимо кількість цих операцій. Нагадаємо, що з точки зору користувача в табличній моделі даних ці операції є операціями над рядками (стовпцями) таблиці.
Пошук запису із заданим значенням ключа
При послідовній структурі зберігання пошук може здійснюватися лише перебором. Читається перший фізичний запис, в ОП він розбивається на k логічних записи (розблоковується), задане значення ключа порівнюється із значенням ключа кожного логічного запису. При неспівпаданні читається наступний фізичний запис і процес повторюється. У кращому разі потрібний запис буде знайдений за одне звернення, в гіршому – необхідно прочитати всі фізичні записи. Середня кількість звернень до зовнішньої пам'яті для пошуку потрібного запису ТР визначається наступною формулою
ТР = (1+[N/k])/2
де N – кількість логічних записів, k – коефіцієнт блокування, [N/k] ‑ кількість фізичних записів.
Читання запису із заданим значенням ключа
Спочатку необхідно знайти потрібний запис (дивися операцію "пошук"). Після закінчення операції "пошук" потрібний запис вже зчитаний в ОП. Кількість звернень до ВП дорівнює ТР.
Коректування запису
Спочатку необхідно знайти потрібний запис (дивися операцію "пошук"). Після закінчення операції "пошук" в ОП знайдений логічний запис коректується, формується фізичний запис (блок) і заноситься у зовнішню пам'ять за тією адресою, звідки вона була зчитана. Кількість звернень до ВП дорівнює ТР+1.
Видалення запису
Аналогічна операції коректування. Службове поле відповідного логічного запису позначається як "видалений запис". Кількість звернень до ВП рівною ТР+1.
Додавання запису
Розглянемо два випадки. У першому випадку користувач вводить новий логічний запис у кінець таблиці. Тоді логічний запис, що вводиться, додається в кінець файлу. Він заноситься або в останній фізичний запис (якщо в ній менше k логічних записів – блок неповний), для цього цей запис має бути зчитаний в ОП. Якщо останній блок повний, то формується новий фізичний запис, який заноситься в кінець файлу. Кількість звернень до ВП рівна відповідно або 2, або 1.
У другому випадку користувач вводить новий логічний запис у вказаний їм i-ий рядок таблиці (i=1, 2, ..., n). У цьому випадку читається фізичний запис з номером [(i-1)/k], що містить i-ий, логічний запис. Якщо відповідний фізичний запис містить порожні логічні записи, то запис, що додається, вставляється у цей блок, блок записується на своє місце у ВП. Кількість звернень до ВП дорівнює 2. Якщо вказаний фізичний запис містить k екземплярів логічних записів вихідної таблиці, читається фізичний запис з номером [i/k]. Якщо цей фізичний запис містить порожні логічні записи, запис, що додається, вставляється в цей блок, блок записується на своє місце у ВП. Сумарна кількість звернень в цьому випадку буде на одиницю більшою і рівна 3.
Якщо фізичні записи з номерами [(i-1)/k] та [i/k] містять по k екземплярів вихідних логічних записів, необхідно формувати додатковий фізичний запис. Відповідний блок міститиме логічний запис, що додається, та k-1 порожніх логічних записів. Блоки з номерами [i/k], [(i+1)/k], ... [N/k] переписуються на одну позицію нижче (зсуваються). Сформований фізичний запис заноситься на місце, що звільнилося (місце запису з номером [i/k]).
У кращому разі (i = N) жоден блок не зрушується. У гіршому разі (i = 1) зсуваються всі блоки. Середня кількість звернень до ВП для перезапису блоків (читання + запис) складе 2[N/k]/2. Тоді сумарна кількість звернень до ВП при додаванні запису в цьому випадку буде рівною 3+[N/k].
Відмітимо, що якщо записи впорядковані за значеннями ключа може проводитися дихотомічним методом і кількість звернень до зовнішньої пам'яті буде не пропорційною (1+[N/k]) /2, а log2[N/k], тобто істотно меншою. Проте додавання запису потребує для збереження впорядкованості, як правило, зсув великої кількості записів. Тому розміщення фізичних записів з впорядкуванням їх за значеннями ключа в СУБД не використовується.