Розподілена база даних

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Розподілена база даних (англ. distributed database, DDB) — сукупність логічно взаємопов'язаних баз даних, розподілених у комп'ютерній мережі. Логічний зв'язок баз даних в розподіленій базі даних забезпечує система управління розподіленою базою даних, яка дозволяє управляти розподіленою базою даних таким чином, щоб створювати у користувачів ілюзію цілісної бази даних.

Архітектура[ред. | ред. код]

Система управління розподіленою базою даних складається з (можливо, порожнього) набору вузлів прийому запитів і набору вузлів збереження даних. Вузли прийому запитів реалізують прозорий інтерфейс доступу до даних, що зберігаються в вузлах збереження даних, та приховують фрагментацію даних між вузлами. Кожен з вузлів може бути представлений незалежним комп'ютером в комп'ютерній мережі з ​​власною (можливо відмінною від інших вузлів) операційною системою.

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

Властивості архітектури[ред. | ред. код]

В архітектури програмно-технічного комплексу розподілених СКБД є три основні характеристики:

Важливою характеристикою є міра однорідності програмно-технічних засобів СКБД.

Спосіб розподілу компонентів системи баз даних за комп'ютерами мережі визначається тим, чи є в мережі єдиний комп'ютер з повноваженнями розподіленої СКБД, або ж їх кілька.

Характеризує, наскільки самостійно компоненти СКБД можуть виконувати свої функції.

До питань автономності належать:

  • автономність проектних рішень;
  • автономність обчислень.

Різновиди архітектури[ред. | ред. код]

Виділяють такі основні різновиди архітектури програмно-технічних засобів розподіленої СКБД, як:

  • Архітектура однорангової мережі. 

Якщо всі комп'ютери мережі є серверами та на кожному комп'ютері розміщено розподілену СКБД і базу даних та з кожного комп'ютера можна надіслати до іншого запит на отримання необхідних даних. То така архітектура буде архітектурою однорангової мережі

  • Архітектура з багатьма незалежними серверами. 

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

  • Архітектура із взаємодіючими серверами. 

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

  • Клієнт-серверна архітектура. 

При даному виді архітектури передбачено наявність єдиного комп'ютера-сервера і багатьох комп'ютерів-клієнтів, що взаємодіють між собою через канали зв'язку. На сервері розташована СКБД та інтегрована (централізована) база даних. Ніякого розподілу баз даних за вузлами мережі немає. На клієнтських комп'ютерах виконуються додатки, які працюють із серверною базою даних, а також розміщене програмне забезпечення для зв'язку з віддаленою СКБД. Як клієнти, так і сервер оснащені комунікаційним програмним забезпеченням.

Принципи розподілу даних[ред. | ред. код]

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

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

Механізми доступу до даних[ред. | ред. код]

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

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

Розподілене зберігання даних[ред. | ред. код]

Фрагментація[ред. | ред. код]

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

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

Фрагментація відношень. Завдання фрагментації відношень формулюється в такий спосіб. Нехай задане відношення R. Його потрібно зобразити у вигляді сукупності відношень R1, …, Rn так, щоб ця сукупність відповідала критеріям ефективності (за часом доступу, пам'яттю, завантаженістю комп'ютерів тощо).

Фрагментація є коректною, якщо вона повна, не містить перетинів і може бути реконструйована. Пояснимо ці терміни.

Декомпозиція відношення R на фрагменти R1, R2, … Rn є повною тоді й лише тоді, коли кожен елемент даних з R належить якомусь із відношень Ri.

Декомпозиція відношення R на фрагменти R1, R2, … Rn може бути реконструйована, якщо існує такий реляційний вираз φ(R1, R2, … Rn), що R=φ(R1, R2, … Rn).

Декомпозиція відношення R на фрагменти R1, R2, … Rn не містить перетинів, якщо будь-який елемент даних з R міститься не більш ніж в одному фрагменті.

Є три типи фрагментації відношень:

  • горизонтальна;
  • вертикальна;
  • змішана

Горизонтальна фрагментація

Горизонтальна фрагментація полягає в розподілі кортежів відношення за фрагментами. Формально горизонтальну фрагментацію можна визначити в такий спосіб. Нехай задане відношення R і на ньому визначений предикат Fi. Тоді горизонтальний фрагмент Rі відношення визначається так:

Тобто горизонтальний фрагмент Rі — це множина кортежів R, що задовольняють умову Fi.

Вертикальна фрагментація

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

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

Змішана фрагментація. Змішана фрагментація передбачає послідовне застосування вертикальної і горизонтальної фрагментацій.

Розподіл даних за вузлами мережі

Після отримання усіх необхідних фрагментів відношень постає проблема розподілу цих фрагментів за вузлами мережі. Єдиних рекомендацій стосовно того, як це робити, немає. Потрібно знайти оптимальний розподіл фрагментів F за вузлами мережі S за умови, що відомий розподіл додатків Q за вузлами мережі.

Реплікація[ред. | ред. код]

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

Механізми реплікації

Видавець — сервер, що надає розміщені на ньому дані для копіювання на інші сервери.

Дистриб'ютор — сервер, що підтримує розподілену базу даних.

Передплатник — сервер, що отримує копії даних, надані видавцем.

Існують два методи відновлення даних передплатників:

  • Реплікація за запитом полягає в тому, що передплатник періодично звертається до дистриб'ютора із запитом про зміни, що відбулися з моменту останнього з'єднання.
  • Примусова реплікація, с свою чергу, коли дистриб'ютор сам встановлює з'єднання з передплатником і пересилає йому необхідні дані.

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

Моделі реплікації

  • реплікація моментальних знімків;
  • реплікація транзакцій.

Топологія реплікацій

Топологія реплікацій описує характер взаємозв'язків між учасниками реплікації:

  • реплікація «один-до-багатьох» передбачає наявність одного видавця і кількох передплатників;
  • реплікація «багато-до-одного» має місце, коли дані від кількох видавців пересилаються одному передплатнику;
  • реплікація «багато-до-багатьох» означає, що дані від кількох видавців пересилаються кільком передплатникам.

Обробка розподілених транзакцій[ред. | ред. код]

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

Транзакції мають задовольняти вимоги ACID (Atomicity, Consistency, Isolation, Durability — атомарність, несуперечність, ізольованість, довговічність), що гарантують правильність і надійність роботи системи.

Атомарність передбачає таке:

  • виконуються всі операції транзакції або жодна з них не виконується;
  • якщо виконання транзакції було перерване, то всі зроблені транзакцією зміни мають бути скасовані

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

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

  • Рівень 0. Заборона «забруднення» даних.
  • Рівень 1. Заборона некоректного зчитування.
  • Рівень 2. Заборона неповторюваного зчитування.
  • Рівень 3. Заборона «фантомів».

Властивість ізольованості означає, що на роботу транзакції не мають впливати інші транзакції. Транзакція «бачить» дані в тому стані, в якому вони перебували до початку роботи іншої транзакції, або в тому стані, в якому вони перебувають після її завершення.

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

Властивості розподілених баз даних[ред. | ред. код]

12 властивостей розподілених без даних, були сформульовані Крістофером Дейтом, одним з найбільших діячів в галузі баз даних. А саме:

  • Локальна автономія — управління даними на кожному з вузлів розподіленої системи виконується локально.
  • Незалежність вузлів — всі вузли рівноправні і незалежні, а розташовані на них БД є рівноправними постачальниками даних в загальний простір даних.
  • Безперервні операції — можливість безперервного доступу до даних в рамках розподіленої БД незалежно від їх розташування і незалежно від операцій, що виконуються на локальних вузлах.
  • Прозорість розташування — користувач, що звертається до БД, нічого не повинен знати про реальне, фізичне розміщення даних у вузлах інформаційної системи.
  • Прозора фрагментація — можливість розподіленого (тобто на різних вузлах) розміщення даних, логічно поєднаних в єдине ціле. Існує фрагментація двох типів: горизонтальна і вертикальна.
  • Прозоре тиражування — тиражування даних — це асинхронний процес перенесення змін об'єктів вихідної бази даних в бази, розташовані на інших вузлах розподіленої системи
  • Обробка розподілених запитів — можливість виконання операцій вибірки даних з розподіленої БД, за допомогою запитів, сформульованих на мові SQL
  • Обробка розподілених транзакцій — можливість виконання операцій оновлення розподіленої бази даних, які не порушують цілісність і узгодженість даних.
  • Незалежність від устаткування — як вузли розподіленої системи можуть виступати ПК будь-яких моделей і виробників
  • Незалежність від операційних систем — різноманіття операційних систем, керуючих вузлами розподіленої системи
  • Прозорість мережі — спектр підтримуваних конкретною СУБД мережевих протоколів не має бути обмеженням системи, заснованої на розподіленій БД
  • Незалежність від баз даних — в розподіленій системі можуть працювати СУБД різних виробників, і можливі операції пошуку і оновлення в базах даних різних моделей і форматів.

Література[ред. | ред. код]