Організація баз даних та знань 1. Тема 4. Розподілені та паралельні бази даних. Лекція 4/1. Архітектура розподілених баз даних

Содержание

Слайд 2

Лекція 4/1. Архітектура розподілених баз даних. Учбові питання лекції: Вступ. 1.

Лекція 4/1. Архітектура розподілених баз даних.

Учбові питання лекції:

Вступ.
1. Класифікація розподілених

БД.
2. Архітектура розподілених БД.
3. Обробка розподілених запитів.

1. Пасічник В.В., Резніченко В.А. Організація баз даних та знань. – К.: Видавнича група BHV, 2006. – 384 с.
2. Малыхина М.П. Базы данных: основы, проектирование, использование. 2-е изд. перераб. – СПб.: БХВ-Петербург, 2006. – 528 с.
3. Базы данных: лабораторных практикум. [Электронный ресурс]. Составитель И.Е. Агапов. – Воронеж, 2005. – 91 с.
4. Андон Ф., Резниченко В. Язык запросов SQL. Учебный курс. – СПб.: Питер; Киев: Издательская группа BHV, 2006. – 416 с.: ил.
5. Зубрилина Т.В., Юрьев В.Н. Базы данных. Проектирование реляционных баз и хранилищ данных с использованием CASE-технологий:Учеб. пособие. СПб.: Изд-во Политехи, ун-та, 2007. 44с.
6. Маклаков СВ. BPwin и ERwin. CASE-средства разработки информационных систем. М.: Диалог - МИФИ, 2000.
7. Новожилова М.В., Резнікова С.Ю., Інформаційна безпека систем управління базами даних: Навчальний посібник. – Харків:ХДТУБА, 2004. – 185 с.
8. Гаврилова Т.А., Хорошевский В.Ф. Базы знаний интеллектуальных систем. – СПб:

Л і т е р а т у р а:

Слайд 3

Режими роботи з базою даних Якщо з БД працюють одночасно декілька

Режими роботи з базою даних

Якщо з БД працюють одночасно декілька користувачів,

то в цьому випадку СУБД повинна забезпечувати коректну паралельну роботу всіх користувачів над одними і тими ж даними. Розрізняють розподілену обробку і розподілені БД.
Слайд 4

Основні поняття і визначення Розподілена обробка − це обробка з використанням

Основні поняття і визначення

Розподілена обробка − це обробка з використанням централізованої

бази даних, доступ до якої може виконуватись з різних комп'ютерів мережі. Ця топологія часто називається "клієнт-сервер". В цій системі одні вузли − клієнти, а інші − сервери.
Сервер − комп'ютер, який надає деякі послуги іншим комп'ютерам, обмін повідомленнями з якими здійснюється за допомогою мережі, що їх з'єднує. Послуги полягають у наданні комп'ютеру, який звертається, ресурсів сервера (файлів, обчислювальних ресурсів і т.ін.) шляхом виконання вказаної програми і видачі результатів її роботи.
Клієнт − це процес, який посилає запит на обслуговування.
Розподілена база даних − це набір логічно зв'язаних між собою роздільних даних і їх описів, які фізично розподілені в деякій комп'ютерній мережі.
Розподілена СУБД – це програмна система, яка призначена для управління розподіленими базами даних і яка забезпечує прозорий доступ користувачів до розподіленої інформації.
Розподілена СУБД, в якій управління кожним із вузлів виконується зовсім автономно називається мультибазовою системою.
Слайд 5

Структура інформаційної системи а − розподілена обробка. б − розподілена база даних.

Структура інформаційної системи

а − розподілена обробка. б − розподілена база даних.

Слайд 6

Розподілена система Якщо всі вузли розподіленої системи використовують той самий тип

Розподілена система

Якщо всі вузли розподіленої системи використовують той самий тип СУБД,

то така система називається гомогенною.
Якщо вузли розподіленої системи використовують різні типи СУБД, які обробляють різні моделі даних, то така система називається гетерогенною.
Слайд 7

Управління паралельною обробкою В багатокористувацьких системах з БД одночасно можуть працювати

Управління паралельною обробкою

В багатокористувацьких системах з БД одночасно можуть працювати декілька

користувачів або прикладних програм. Для збереження цілісності даних і забезпечення безпеки БД в цих умовах застосовуються транзакції, які забезпечують роботу кожного користувача з узгодженим станом БД.
Транзакція − неподільна з точки зору впливу на БД послідовність операторів маніпулювання даними, яка розглядається СУБД як єдине ціле. Або транзакція успішно виконується, і СУБД фіксує зміни БД, які були зроблені цією транзакцією, у зовнішній пам'яті, або, у разі невдачі, жодна зміна не відображається на стані БД.
Транзакція розглядається як логічна одиниця роботи з БД. Для того, щоби використання механізмів обробки транзакцій дозволило забезпечити цілісність даних й ізольованість користувачів, транзакція повинна мати такі властивості: атомарність (Atomicity), узгодженість (Cosistency), ізольованість (Isolation), довготерміновість (Durability). Транзакції, які мають ці властивості називаються ACID-транзакціями.
Слайд 8

Транзакція Властивості транзакції означають таке: − атомарність означає, що транзакція виконується,

Транзакція

Властивості транзакції означають таке:
− атомарність означає, що транзакція виконується, як єдина операція

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

Керування паралелізмом Наступні конфліктні ситуації, які можуть призвести до одержання неправильного

Керування паралелізмом

Наступні конфліктні ситуації, які можуть призвести до одержання неправильного результату

через взаємні перешкоди між деякими транзакціями, можливі при відсутності відповідного керування (слід зазначити, що транзакція, яка вносить перешкоду, сама по собі може бути правильної):
- проблема втрати результатів відновлення;
- проблема незафіксованої залежності;
- проблема несумісного аналізу.
Слайд 10

Проблема втрати результатів відновлення Розглянемо ситуацію транзакція А витягає деякий кортеж

Проблема втрати результатів відновлення

Розглянемо ситуацію транзакція А витягає деякий кортеж р

у момент часу t1; транзакція В витягає деякий кортеж у момент часу t2; транзакція А обновляє деякий кортеж р (на основі значень, отриманих у момент часу t1) у момент часу t3; транзакція В обновляє той же кортеж р (на основі значень, отриманих у момент часу t2, які мають ті ж значення, що й у момент часу t1) у момент часу t4. Однак результат операції відновлення, виконаною транзакцією А буде загублений, оскільки в момент часу t4 вона не буде врахована й тому буде «скасована» операцією відновлення, виконаною транзакцією В.
Слайд 11

Проблема незафіксованої залежності Проблема незафіксованої залежності з'являється, якщо за допомогою деякої

Проблема незафіксованої залежності

Проблема незафіксованої залежності з'являється, якщо за допомогою деякої транзакції

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

Транзакція А стає залежною від невиконаної зміни в момент часу t2

Слайд 12

Проблема незафіксованої залежності У прикладі транзакція А в момент часу t2

Проблема незафіксованої залежності

У прикладі транзакція А в момент часу t2 зустрічається

з невиконаним відновленням. Потім це відновлення відміняється в момент часу t3. Таким чином, транзакція А виконується на основі фальшивого припущення, що кортеж р має деяке значення в момент – часу t2, тоді як насправді він має деяке значення, що існувало ще в момент часу t1. У підсумку після виконання транзакції А буде полікований невірний результат.
Слід звернути увагу на те, що скасування виконання транзакції В може відбутися не по її провині, а, наприклад, у результаті краху системи. До цього часу виконання транзакції А може бути вже завершене, а тому катастрофа системи не приведе до скасування виконання транзакції А.
Слайд 13

Проблема несумісного аналізу

Проблема несумісного аналізу

Слайд 14

Проблема несумісного аналізу Показані транзакції А и В, які виконуються для

Проблема несумісного аналізу

Показані транзакції А и В, які виконуються для кортежів

з рахунками (РАХУНОК). При цьому транзакція А підсумує баланси, транзакція В робить переклад суми 10 з рахунку 3 на рахунок 1. Отриманий у підсумку транзакції результат 110, мабуть, невірний, і якщо він буде записаний у базі, то в ній може виникнути проблема несумісності.
У цьому випадку говорять, що був виконаний несумісний аналіз. Слід звернути увагу на те, що в цьому випадку не ідеться про залежність транзакції А від транзакції В, тому що транзакція В виконала всі відновлення до того, як транзакція А витягла рахунок 3.
Слайд 15

Обробка паралельних транзакцій Для обробки паралельних транзакцій застосовується метод тимчасових міток

Обробка паралельних транзакцій

Для обробки паралельних транзакцій застосовується метод тимчасових міток

і серіалізація транзакцій.
Блокування передбачає встановлення режиму доступу (монопольного або сумісного) до деякого ресурсу даних, що дозволяє виключити доступ до нього одночасно з даною транзакцією інших транзакцій, в результаті якого може бути порушена логічна цілісність даних БД.
Об'єктом блокування може бути вся БД, окремі таблиці, сторінки, рядки.
Серіалізація транзакцій − процедура, яка забезпечує підтримку незалежного виконання транзакцій. Це означає, що дія двох паралельно діючих транзакцій буде така сама, як і їх послідовна дія: спочатку перша, а потім друга, або навпаки − спочатку друга, а потім перша.
У ході виконання транзакції користувач бачить тільки узгоджені дані і не бачить неузгоджених проміжних даних. Для підтримки паралельної роботи складається спеціальний план. Для реалізації серіалізації транзакцій застосовується механізм блокувань.
Слайд 16

Види блокування − нежорстке блокування або роздільне блокування (Shared − S-блокування);

Види блокування

− нежорстке блокування або роздільне блокування (Shared − S-блокування); об'єкт блокується

для виконання операції читання; об'єкти в цьому випадку не змінюються у ході виконання транзакції і доступні іншим транзакціям також, але тільки в режимі читання;
− жорстке блокування або монопольне (eXclusive − X-блокування); об'єкт блокується для виконання операції запису, модифікації або вилучення. В цьому випадку виконується монопольне блокування об'єкта і об'єкт залишається недоступним іншим транзакціям до моменту завершення роботи даної транзакції.
Слайд 17

Взаємне блокування транзакцій Застосування різних типів блокувань призводить до тупиків. Тупикова

Взаємне блокування транзакцій

Застосування різних типів блокувань призводить до тупиків. Тупикова ситуація

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

Блокування Основою визначення тупикових ситуацій є побудова графа очікування транзакцій. Алгоритм

Блокування

Основою визначення тупикових ситуацій є побудова графа очікування транзакцій. Алгоритм виходу

із тупика передбачає визначення транзакції-жертви. Після вибору такої транзакції виконується її відкат.
Для серіалізації транзакцій також застосовується двофазне блокування, яке полягає у такому:
− перед виконанням операцій з будь-яким об'єктом транзакція блокує цей об'єкт (накопичення захватів);
− після зняття блокування транзакція не повинна накладувати ніяких інших блокувань (вивільнення захватів).
Слайд 19

Сумісность для Х- і S-Блокування 1. Припустимо, що в системі підтримується

Сумісность для Х- і S-Блокування

1. Припустимо, що в системі підтримується два

типи блокувань: блокування без взаємного доступу (монопольне блокування), називана Х-Блокуванням, і блокування із взаємним доступом, називана S-Блокуванням. Іноді ці блокування називають блокуваннями запису й читання відповідно.
2. Якщо транзакція А блокує кортеж р без можливості взаємного доступу, то запит іншої транзакції В с блокуванням цього кортежу р буде відмінний.
3. Якщо транзакція А блокує кортеж р з можливістю взаємного доступу, то
– запит з боку деякої транзакції В на Х-Блокування кортежу буде відкинутий;
- запит з боку деякої транзакції В на S-Блокування кортежу р буде прийнятий ( тобто транзакція В також буде блокувати кортеж р за допомогою S-Блокування.

Символи S і Х позначають блокування, а прочерк – відсутність блокування. N позначає конфліктну ситуацію (запит з боку іншої транзакції не може бути вдоволений, а сама ця транзакція переходить у стан очікування), а Y – повну сумісність (запит задовольняється).

Слайд 20

Протокол доступу до даних 1. Транзакція, призначена для добування кортежу, насамперед,

Протокол доступу до даних

1. Транзакція, призначена для добування кортежу, насамперед, повинна

накласти S-Блокування на цей кортеж.
2. Транзакція, призначена для відновлення кортежу, насамперед повинна накласти Х-Блокування на цей кортеж.
3. Якщо запитуване блокування з боку транзакції У відкидається через конфлікт із деяким іншим блокуванням з боку транзакції А, то транзакція В переходить у стан очікування. При цьому транзакція В буде перебувати в стані очікування доти, поки не буде знято блокування, задана транзакцією А.
4. Х-Блокування зберігаються аж до кінця виконання транзакції ( до операції «завершення виконання» або «скасування виконання»).
Слайд 21

Серіалізація транзакцій З керуванням транзакціями в багатокористувацькій СУБД зв'язані важливі поняття

Серіалізація транзакцій

З керуванням транзакціями в багатокористувацькій СУБД зв'язані важливі поняття сериализации

(здатності до впорядкування) транзакцій і сериального плану виконання суміші транзакцій. Під сериализаций транзакцій, що паралельно виконуються, розуміється такий порядок планування їх роботи, при якім сумарний ефект суміші транзакцій еквівалентний ефекту їх деякого послідовного виконання. Сериальный план виконання суміші транзакцій - це такий план, який приводить до сериализации транзакцій. Зрозуміло, що якщо вдається добитися дійсно сериального виконання суміші транзакцій, то для кожного користувача, з ініціативи якого утворена транзакція, присутність інших транзакцій буде непомітно (якщо не вважати деякої затримки роботи з порівняння з однокористувацьким режимом).
Така здатність до впорядкування є загальновизнаним критерієм правильності керування паралельною обробкою кортежів. Точніше кажучи виконання, що чергується, заданого безлічі транзакцій буде вірним, якщо воно впорядковане. Обґрунтованість цього твердження випливає з наступних зауважень.
1. Окремі транзакції вважаються вірними, якщо при їхньому виконанні БД переходить із одного несуперечливого стану в інший несуперечливий стан.
2. Отже, виконання транзакцій одна за іншою в будь-якому послідовному порядку (використовуються незалежні друг від друга транзакції) також є вірним.
3. виконання, що чергується, транзакцій, отже, є вірним, якщо воно еквівалентно деякому послідовному виконанню, тобто якщо воно підлягає упорядочиванию.
Для заданого набору транзакцій будь-який порядок їх виконання називається графіком запуску. Два графіка називаються еквівалентними, якщо при їхньому виконанні буде отриманий однаковий результат.