- •Організація баз даних
- •1.Вступ
- •2.Основні поняття.
- •1.1. Класифікація інформаційних систем
- •2.Файлові системи бд. Підхід, використовуваний у файлових системах. Обмеження, властиві файловим системам.
- •3.Системи з базами даних. База даних. Система керування базами даних — скбд. Компоненти середовища скбд. Переваги і недоліки скбд.
- •3.1.Компоненти середовища скбд
- •Контроль за надмірністю даних
- •4.Етапи життєвого циклу інформаційної системи. Розробка бази даних. Розподіл обов'язків у системах з базами даних. Адміністратори даних і адміністратори баз даних.
- •3.4.Недоліки скбд
- •2.1.Трьохрівнева архітектура ansi-sparc.
- •2.2. Схеми, відображення й екземпляри
- •2.3.Незалежність від даних
- •1. Функції субд (3.11.01.02).
- •1.Безпосереднє управління даними в зовнішній пам'яті
- •2.Управління транзакциями
- •3.Журналізація
- •4.Підтримка мов бд
- •5.Адміністрування бд.
- •2. Концепція відкритих систем. Відкритий зв’язок з бд odbc (3.11.04.01).
- •3. Багатокористувацькі субд та їх архітектура.
- •3.1. Телеобробка
- •3 .2.Архітектура іс з файловим сервером
- •3.3.Технологія "клієнт/сервер"
- •3.4.Розподілена архітектура.
- •3.5.Інтернет - архітектура.
- •4.1.Модель даних, мета побудови, класифікація, область застосування
- •4.2. Об'єктні моделі даних
- •4.3. Моделі даних на основі записів
- •4.2.1.Ієрархічна модель даних
- •4.2.2.Мережева модель даних у мережній структурі при тих же основних поняттях (рівень, вузол, зв'язок) кожний елемент може бути пов'язаний з будь-яким іншим елементом.
- •4.2.3.Реляційна модель даних
- •4.4. Фізичні моделі даних
- •5.1. Математичні відношення. Структура реляційних даних.
- •5.2.Домени
- •Лекція 6. Концептуальне проектування. Метод er-діаграми.
- •6.1.Рівні проектування предметної області (3.11.06.01).
- •6.2. Інфологічне проетування бд (3.11.06.02).
- •6.2. Концептуальне проектування бази даних та методологія.
- •6.3. Логічне проектування бд.
- •6.4. Даталогічна або фізична модель даних (3.11.06.03).
- •6.5. Проектування бд методом “сутність-зв’язок” er-діаграми (3.11.06.06)
- •6.5.2.Представлення зв'язків та сутностей на діаграмах.
- •6.5.4.Правила формування зв’язків між сутностями концептуальної схеми.
- •5.3.Нормалізація.
- •5.3.2.Процес нормалізації.
- •5.3.3.Нормальна форма Бойса-Кодда (нфбк). Визначення нормальної форми Бойса-Кодда.
- •5.3.4. Четверта нормальна форма (4нф). Визначення четвертої нормальної форми.
- •5.3.5. П'ята нормальна форма (5нф) Властивості з'єднання без втрат і збереження залежності
- •8.2. Виникаючі проблеми при використанні універсального відношення.
- •7.1. Введення в реляційну алгебру і реляційне числення.
- •7.2. Реляційна алгебра та її операції.
- •Вихідне відношення r та результуюче відношення s.
- •7.5.1. Операція декартового добутку
- •7.5.2. Операція об’єднання
- •7.5.3. Операція різниці.
- •7.5.4.Операції з'єднання
- •7.5.4.5.2. Праве відкрите зовнішнє з'єднання.
- •7.5.4.5.2. Повне відкрите зовнішнє з'єднання.
- •7.5.5.Операція перетинання
- •7.5.6.Операція ділення
- •10.1. Вступ Основні поняття sql.. Історія розвитку
- •10.2. Структура мови sql-92.
- •10.3. Основні оператори мови dml.
- •10.4 Зміна вмісту бази даних. Запити на оновлення даних
- •10.5. Оператори адміністрування:
- •10.63. Загальний огляд методів обробки запитів.
- •10.7. Архітектура клієнт-сервера і мова sql.
- •10.8 Забезпечення безпеки
- •11.1. Основні оператори мови ddl.Запити на створення та оновлення схеми бд, таблиць та представлень.
- •11.1.1. Створення баз даних.
- •11.1.2.Створення таблиць (оператор create table). Видалення таблиць (оператор drop table).
- •11.1.3.Створення відображення(представлення).В идаленнявідображення.
- •11.1.4.Створення індексу (оператор create index). Видалення індексу (оператор drop index).
- •11.2. Мова sql та qbe
- •10. Внутрішня мова субд.
- •11. Зберігаємі процедури та тригери. Призначення та переваги.
- •12. Технології доступу bde, ado, ado.Net, jdbc
- •Лекція 12. Транзакції. Паралельне виконання транзакцій.
- •12.1. Визначення транзакції. Виконання. Відкат.
- •12.2. Властивості транзакції. Види транзакцій.
- •12.3. Блокування. Рівні ізолювання транзакцій.
- •12.4. Управління транзакціями в мовах програмування.
- •12.4. Впорядкованість і відновлюваність.
- •12.5 Методи керування паралельністю.
- •Лекція 13. Індексація даних в бд.
- •13.1. Поняття індексації даних.
- •2.Структура індекса. Аналогією індекса може слугувати зміст будь якої книги з вказаними номерами сторінок, де починається той чи і інший розділ.
- •3. Технологія b-дерева
- •3.1.Типи індексів b-дерева.
- •3.1.1.Кластерні індекси
- •3.1.2.Некластерні індекси
- •4. Технологія хеширування.
- •5.Алгоритм роботи скбд при внесенні та видаленні запису в таблицю, що містить індексовані поля з використанням технології в-дерева.
- •5.1.При вставці нового запису в таблицю виконується:
- •5.2.При видаленні запису виконуються наступні дії:
- •8.1.Обмеження послідовності стовпців складного ключа.
- •6.Властивості індексів.
- •7.Індексація. За і проти. Ефективність використання.
- •8.Обмеження використання індексів.
- •8.2.Обмеження пов’язані з низькою селективністю індекса.
- •9.Індексація данних бд та оптимізатор sql-запитів.
- •10. Повнотекстові індекси
- •14.1. Розподіленні бази даних.
- •14.1.1. Класифікація рбд.
- •14.1.2. Переваги рбд.
- •14.1.3. Недоліки рбд.
- •14.1.4. Функції сурбд.
- •14.1.5. Архітектура рбд.
- •14.2. Компонентна структура рбд.
- •14.3. Проектування розподілених баз даних.
- •Фрагментація повина відповідати правилам:
- •14.4. Забезпечення прозорості.
- •16.1. Апаратні та програмні складові.
- •16.2. Особливості oltp, dss та olap систем
- •16.6. Безпека бази даних
- •16.3. Управління користувачами.
- •16.2. Управління доступом. Засоби підтримки безпеки в sql.
- •17.1. Недоліки реляційних систем.
- •17.2. Основні концепції об’єктно-орієнтованого підходу.
- •17.3. Альтернативні стратегії розробки об’єктно-орієнтованих субд.
- •17.4. Переваги та недоліки об’єктно-орієнтованих субд.
- •17.5. Перспективи розвитку бд.
12.4. Управління транзакціями в мовах програмування.
Ніяка СУБД не має внутрішньої можливості встановити, які саме зміни повинні бути сприйняті як єдине ціле (як одна логічна одиниця).
Тому повинен існувати метод, що дозволяє вказувати границі кожної транзакції ззовні, з боку користувача. У більшості мов маніпулювання даними для вказівки границь окремих транзакцій використовуються оператори BEGIN TRANSACTION, COMMIT і ROLLBACK (або їхні еквіваленти).
Якщо ці обмежники не були використані, уся виконувана програма розцінюється як одна єдина транзакція. СУБД автоматично виконає команду COMMIT при нормальному завершенні цієї програми. Аналогічно, у випадку її аварійного завершення в базі даних автоматично буде виконана команда ROLLBACK.
Тому необхідно старатись, щоб пишучі транзакції були короткими.
Керування паралельністю. Проблеми паралелізму.
Найважливішою метою створення баз даних є організація паралельного доступу багатьох користувачів до спільно використовуваних даних. Забезпечити паралельний доступ нескладно, якщо всі користувачі будуть тільки читати дані, поміщені в базу. У цьому випадку робота кожного з них не робить ніякого впливу на роботу інших користувачів. Однак, якщо два або більше користувачі одночасно звертаються до бази даних і хоча б один з них має на меті обновити збережену в базі інформацію, можливий взаємний вплив процесів один на одного, здатний привести БД у суперечливий стан.
При цьому можливі наступні потенційні проблеми при виконанні транзакцій:
проблема загубленого відновлення,
проблему залежності від нефіксованих результатів
проблему неузгодженої обробки.
Проблема загубленого відновлення.
Результати успішно завершеної операції відновлення однієї транзакції можуть бути перекриті результатами виконання іншої транзакції. Ця аномалія відома як проблема загубленого відновлення.
Її суть ілюструється наступним прикладом:
Час |
Транзакція Т1 |
Транзакція Т2, |
Поле balx |
t1 |
begin transaction |
|
100 |
t2 |
read(bal(t2)) |
begin transaction |
100 |
t3 |
balT1(t3) = bal(t2) + 100 |
Read(bal(t3)) |
100 |
t4 |
write (balT1(3)) |
bal(t4) = balT2(t3)- 10 |
200 |
t5 |
commit |
Write (balT2(t4)) |
90 |
t6 |
|
commit |
90 |
У цьому прикладі транзакція T1 виконується паралельно з транзакцією Т2. Транзакція Т1 виконує занесення 100грн. на рахунок bal, а Т2 знімає 10грн. з цього ж рахунку, на якому з початку знаходиться 100грн.
Якщо ці транзакції будуть виконуватися послідовно, без чергування їх операцій, то після завершення роботи на рахунку буде знаходитися сума в 190грн., - причому незалежно від порядку виконання транзакцій
Транзакція Т1 починаються в момент часу t1, а Т2 в момент часу t2. Кожна з них зчитує початкове значення суми на рахунку bal, рівне 100грн. Потім транзакція Т1 збільшує суму на 100грн. і записує результат, рівним 200грн., у базу даних — на рахунок bal(t4). Тим часом транзакція T2 зменшує значення своєї копії початкової суми на рахунку і записує отримане значення, рівним 90грн. у базу даних на рахунок bal(t5)., перекриваючи результат попереднього відновлення. У результаті з рахунку "зникає" 100грн.
Уникнути втрати результатів виконання транзакції Т1 можна, заборонивши транзакції t2 зчитувати вихідне значення на рахунку bal аж до завершення виконання транзакції Т1.
Проблема залежності від нефіксованих результатів.
Проблема залежності від нефіксованих результатів виникає в тому випадку, якщо одна з транзакцій одержить доступ до проміжних результатів виконання іншої транзакції до того, як вони будуть зафіксовані в базі даних.
Час |
Транзакція Т3 |
Транзакція T4 |
Поле balх |
t1 |
|
begin transaction |
100 |
t2 |
|
read(balx) |
100 |
tз |
|
bal(t3) = bal(t2) + 100 |
100 |
t4 |
begin transaction |
write (bal(t3)) |
200 |
t5 |
Read(bal(t5)) |
|
200 |
t6 |
bal(6) = bal(t5) -10 |
rollback |
100 |
t7 |
Write (bal(t6)) |
|
190 |
t8 |
commit |
|
190 |
У прикладі транзакція Т4 збільшує значення суми на рахунку bal до 200грн., після чого виконання транзакції скасовується, з відновленням початкового значення на рахунку bal, рівним 100грн.
Однак до цього моменту транзакція Т3 уже встигла зчитати змінене значення рахунка bal=200грн. і використала саме це значення при виконанні операції зняття грошей з рахунку, після чого зафіксувала в базі даних невірний результат 190грн. замість 90грн.
Причина виконання відкату транзакції Т4 несуттєва – наприклад при її виконанні була виявлена деяка помилка (введено невірний номер рахунку).
Джерелом помилки є припущення транзакцією Т3, що виконана в транзакції Т4 зміна буде успішно зафіксована в базі даних, хоча насправді мав місце відкат транзакції.
Проблему можна усунути, заборонивши транзакції Т3 зчитувати значення рахунку bal доти, поки транзакція Т4 не буде або зафіксована, або скасована.
Проблема неузгодженої обробки.
В обох приведених вище прикладах мова йшла про транзакції, що виконували відновлення даних у базі, наявність взаємного впливу між якими і викликало суперечливий стан БД.
Однак транзакції, що тільки зчитують інформацію з бази даних, також можуть давати невірні результати, якщо їм будуть доступні для читання проміжні результати паралельно виконуваних і ще не завершених транзакцій, що обновляють інформацію в базі. Цю проблему ще називають читанням сміття
Час |
Транзакція Т5 |
Транзакція Т6 |
Поле bal1 |
Поле bal2 |
Поле bal3 |
Поле sum |
t1 |
|
begin transaction |
100 |
50 |
25 |
|
t2 |
begin transaction |
sum = 0 |
100 |
50 |
25 |
0 |
t3 |
read(bal1(t3)) |
read (bal(t3)) |
100 |
50 |
25 |
0 |
t4 |
bal1(t4) = bal1(t3) – 10 |
sum = sum + bal(t3) |
100 |
50 |
25 |
100 |
t5 |
write (bal1(t4)) |
read(bal2(t5)) |
90 |
50 |
25 |
100 |
t6 |
read(bal3(t6)) |
sum = sum + bal2(t5) |
90 |
50 |
25 |
150 |
t7 |
Bal3(t7) = bal3(t6) + 10 |
|
90 |
50 |
25 |
150 |
t8 |
write (bal3(t7)) |
|
90 |
50 |
35 |
150 |
t9 |
commit |
read (bal3(t9)) |
90 |
50 |
35 |
150 |
t10 |
|
sum = sum + bal3(t9) |
90 |
50 |
35 |
185 |
t11 |
|
commit |
90 |
50 |
35 |
185 |
Транзакція Т6 обчислює суму залишків на рахунках bal1= 100грн., bal2=50грн. і bal3= 25грн.
Паралельно з Т6 транзакція Т5 здійснює переказ 10грн. з рахунку bal1 на рахунок bа13.
В результаті значення суми, отримане транзакцією Т6 є невірним: 185грн. замість 175грн.
Ця проблема може бути усунута шляхом, заборони транзакції Т6 зчитувати значення на рахунках bal1 і bal3 доти, поки транзакція Т5 не зафіксує виконані нею відновлення.
Використання протоколу двох фазного блокування для усунення проблем.
