Распределенные базы данных. Технология тиражирования.



Тиражирование данных - это асинхронный перенос изменений объектов исходной базы данных (sourcedatabase) в БД, принадлежащим различным узлам распределенной системы. Функции тиражирования данных выполняет специальный модуль СУБД - сервер тиражирования данных, называемый репликатором (replicator). Его задача - поддержка идентичности данных в принимающих базах данных (targetdatabase) данным в исходной БД. Сигналом для запуска репликатора служит срабатывание правила (см. Раздел 2), перехватывающего любые изменения тиражируемого объекта БД. Возможно и программное управление репликатором посредством сигнализаторов о событиях в базе данных.

Тиражирование - используемая в РБнД технология, предусмат­ривающая поддержку копий всей БД или ее фрагментов в нескольких узлах сети. Копия базы данных, являющаяся членом набора других копий, которые могут быть синхронизированы между собой, называ­ется репликой. Копии БД обычно приближены к местам использования информации. Как синоним понятию «тиражирование» использу­ется термин «репликация». Тиражирование является сравнительно новой технологией.

Процесс обновления реплик, при котором происходит передача обновляемых записей и других объектов и согласование дублирую­щихся данных, называется синхронизацией. Обмен данными между репликами может быть как односторонним, так и двусторонним. Кроме того, возможна синхронизация реплик под управлением синхро­низатора. В отличие от собственно распределенных систем (систем с фрагментированием), в которых, как правило, при выполнении рас­пределенных запросов реализуется протокол двухфазной фиксации, в системах с реплицированными базами данных обычно использует­ся инструментарий асинхронной репликации.

В настоящее время многие известные СУБД предлагают пользова­телям возможности репликации. Но, как и во всякой новой области, терминология и подходы к реализации отличаются от системы к системе.

Совокупность данных, которые могут подвергаться тиражирова­нию, называется публикацией.

В системах с тиражированием присутствуют все функции, прису­щие другим видам распределенных систем, плюс еще специфичес­кие функции, вызванные именно тиражированием. Это функции, обес­печивающие пересылку изменений всем узлам-пользователям; функ­ции поддержания идентичности всех копий (реплик) БД; если эталонная база - единственная, то функции формирования базы данных-эталона и некоторые другие. Причем часть этих функций может быть совмещена на одном узле, а часть - отсутствовать, в зависимос­ти от использованной технологии тиражирования.

 

Проблемы, возникающие при параллельном доступе и пути их решения.

1) проблема утраченных обновлений

Суть – пользователи параллельно обрабатывают одни и те же данные, поэтому запоминается только то обновление, которое было проведено последним.

2) проблема незафиксированности обновлений (преждевременного чтения)

Суть – первый пользователь может увидеть данные, которые уже были обновлены вторым пользователем, но эти обновления еще не были окончательно зафиксированы. Теперь в случае проведения отката вторым пользователем первый будет работать с ошибочными несуществующими данными.

3) неповторяющееся чтение и фантомная вставка возникают в случае проведения пользователем групповой обработки данных.

Суть – первая ситуация возникает, если в момент проведения групповой обработки в диапазоне уже считанного другим пользователем изменяется запись, вторая ситуация – если добавляется новая запись.

Пути решения

Блокировка заключается в запрещении некоторых операций над данными, если её обрабатывает другой пользователь.

Блокировки накладываются в соответствии с правилами совместимости блокировок, исключающими конфликты «чтение-запись» «запись-чтение» «запись – запись». Сериализуемость транзакций заведомо гарантируется, если блокировки, относящиеся к одновременно выполняемы транзакциям, удовлетворяют следующему правилу « ни одна блокировка от имени какой либо транзакции не должна устанавливаться, пока не будет снята ранее установленная». Иначе – двухфазовое блокирование.

Протокол двухфазной фиксации (блокировки) управляет процессом выполнения транзакций, затрагивающих несколько узлов БД. Главный принцип: исключение ситуации, в которой транзакция, охватывающая несколько узлов, на одних узлах завершается, а на других нет (т.е. вся транзакция целиком либо завершается, либо отменяется).

Обеспечивает

- согласованное и синхронное изменение распределенной БД параллельными транзакциями

- поддержку целостности и непротиворечивости данных

- предотвращение тупиковых ситуаций

- блокировку или возврат к исходной точке модификации во всех узлах.

Первая фаза: все части транзакции, выполняемые в разных узлах, уведомляют систему, что они готовы заблокировать данные.

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

Уровни блокирования можно выделить в соответствии с блокируемыми единицами — БД, совокупность связных таблиц, таблица, совокупность связных записей, запись, поле.

Иногда реализуется динамическая схема блокировки, которая блокирует бо`льшую единицу и уменьшает область блокировки до уровня записи при обращении новых транзакций в данную область. Пессимистические блокировки запрещают доступ к данным, если они обрабатываются другой записью, и ставят новые обращения в очередь. Оптимистические разрешают параллельную обработку и обрабатывают возникающие конфликты по мере их поступления.

 


Дата добавления: 2018-02-18; просмотров: 1235; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!