Распределенные базы данных. Технология тиражирования.
Тиражирование данных - это асинхронный перенос изменений объектов исходной базы данных (sourcedatabase) в БД, принадлежащим различным узлам распределенной системы. Функции тиражирования данных выполняет специальный модуль СУБД - сервер тиражирования данных, называемый репликатором (replicator). Его задача - поддержка идентичности данных в принимающих базах данных (targetdatabase) данным в исходной БД. Сигналом для запуска репликатора служит срабатывание правила (см. Раздел 2), перехватывающего любые изменения тиражируемого объекта БД. Возможно и программное управление репликатором посредством сигнализаторов о событиях в базе данных.
Тиражирование - используемая в РБнД технология, предусматривающая поддержку копий всей БД или ее фрагментов в нескольких узлах сети. Копия базы данных, являющаяся членом набора других копий, которые могут быть синхронизированы между собой, называется репликой. Копии БД обычно приближены к местам использования информации. Как синоним понятию «тиражирование» используется термин «репликация». Тиражирование является сравнительно новой технологией.
Процесс обновления реплик, при котором происходит передача обновляемых записей и других объектов и согласование дублирующихся данных, называется синхронизацией. Обмен данными между репликами может быть как односторонним, так и двусторонним. Кроме того, возможна синхронизация реплик под управлением синхронизатора. В отличие от собственно распределенных систем (систем с фрагментированием), в которых, как правило, при выполнении распределенных запросов реализуется протокол двухфазной фиксации, в системах с реплицированными базами данных обычно используется инструментарий асинхронной репликации.
|
|
В настоящее время многие известные СУБД предлагают пользователям возможности репликации. Но, как и во всякой новой области, терминология и подходы к реализации отличаются от системы к системе.
Совокупность данных, которые могут подвергаться тиражированию, называется публикацией.
В системах с тиражированием присутствуют все функции, присущие другим видам распределенных систем, плюс еще специфические функции, вызванные именно тиражированием. Это функции, обеспечивающие пересылку изменений всем узлам-пользователям; функции поддержания идентичности всех копий (реплик) БД; если эталонная база - единственная, то функции формирования базы данных-эталона и некоторые другие. Причем часть этих функций может быть совмещена на одном узле, а часть - отсутствовать, в зависимости от использованной технологии тиражирования.
Проблемы, возникающие при параллельном доступе и пути их решения.
|
|
1) проблема утраченных обновлений
Суть – пользователи параллельно обрабатывают одни и те же данные, поэтому запоминается только то обновление, которое было проведено последним.
2) проблема незафиксированности обновлений (преждевременного чтения)
Суть – первый пользователь может увидеть данные, которые уже были обновлены вторым пользователем, но эти обновления еще не были окончательно зафиксированы. Теперь в случае проведения отката вторым пользователем первый будет работать с ошибочными несуществующими данными.
3) неповторяющееся чтение и фантомная вставка возникают в случае проведения пользователем групповой обработки данных.
Суть – первая ситуация возникает, если в момент проведения групповой обработки в диапазоне уже считанного другим пользователем изменяется запись, вторая ситуация – если добавляется новая запись.
Пути решения
Блокировка заключается в запрещении некоторых операций над данными, если её обрабатывает другой пользователь.
Блокировки накладываются в соответствии с правилами совместимости блокировок, исключающими конфликты «чтение-запись» «запись-чтение» «запись – запись». Сериализуемость транзакций заведомо гарантируется, если блокировки, относящиеся к одновременно выполняемы транзакциям, удовлетворяют следующему правилу « ни одна блокировка от имени какой либо транзакции не должна устанавливаться, пока не будет снята ранее установленная». Иначе – двухфазовое блокирование.
|
|
Протокол двухфазной фиксации (блокировки) управляет процессом выполнения транзакций, затрагивающих несколько узлов БД. Главный принцип: исключение ситуации, в которой транзакция, охватывающая несколько узлов, на одних узлах завершается, а на других нет (т.е. вся транзакция целиком либо завершается, либо отменяется).
Обеспечивает
- согласованное и синхронное изменение распределенной БД параллельными транзакциями
- поддержку целостности и непротиворечивости данных
- предотвращение тупиковых ситуаций
- блокировку или возврат к исходной точке модификации во всех узлах.
Первая фаза: все части транзакции, выполняемые в разных узлах, уведомляют систему, что они готовы заблокировать данные.
Вторая фаза: система либо подает им сигнал на блокировку данных для их последующей модификации, либо осуществляет возврат к исходной точке выполнения транзакции в зависимости от того, возможно или невозможно заблокировать данные на всех узлах.
|
|
Уровни блокирования можно выделить в соответствии с блокируемыми единицами — БД, совокупность связных таблиц, таблица, совокупность связных записей, запись, поле.
Иногда реализуется динамическая схема блокировки, которая блокирует бо`льшую единицу и уменьшает область блокировки до уровня записи при обращении новых транзакций в данную область. Пессимистические блокировки запрещают доступ к данным, если они обрабатываются другой записью, и ставят новые обращения в очередь. Оптимистические разрешают параллельную обработку и обрабатывают возникающие конфликты по мере их поступления.
Дата добавления: 2018-02-18; просмотров: 1235; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!