КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Построение транзакционной распределенной системыУровни изоляции и проблемы, которые возникают в базах данных
Основные уровни изоляции: 1) serializable – упорядочивание всех транзакций; 2) repeatable read – обеспечение повторного чтения; 3) read committed – обеспечение чтения подтвержденных данных; 4) read uncommitted – чтение всех данных, включая неподтвержденные, т.е. беспорядочное чтение.
Уровни изоляции введены, чтобы решить определенные проблемы. Пусть есть таблица.
Рассмотрим проблемы баз данных на примере работы с указанной таблицей. 1) грязное чтение
2) неповторяющееся чтение
3) фантомное чтение
Работа БД в режиме Serializable требует не только блокировок на запись и чтение данных, но и на диапазоны данных, сложна в реализации и неэффективна при работе. Есть различные подходы, чтобы обеспечить эти уровни изоляции: 1) Использование блокировок; 2) MVCC (MultiVersion Concurrency Control) – управление конкурентным доступом с помощью многоверсионности. Каждый элемент данных представляет собой ссылку на список; изменение данных происходит следующим образом: когда происходит начало транзакции, запоминается время t1(с точностью до тиков процессора), и это значение используется для отсечения по времени новых изменений. Если для объекта приходит обновление, то происходит засечка времени (t2). Если приходит запрос, то есть временной срез t1, который является параметром любого запроса. Получается, мы не видим последних изменений. Этот подход требует синхронизации транзакций по времени. Для этого используются системные часы и единый механизм выдачи времени. Этот подход работает в системе, расположенной на одном сервере. Иначе возникает проблема синхронизации времени на нескольких серверах.
Существует мнение, что можно построить транзакционную распределенную систему путем объединения вместе нескольких существующих копий транзакционных нераспределенных систем. Однако этот вариант не используется, т.к.:
1) требует обеспечения распределенности; 2) требует обеспечения высокой готовности для узлов (т.е. это не должен быть один узел); 3) существует ограничение: транзакционное чтение может выполняться только в рамках одного сервера; 4) невозможно обеспечить режим Serializable, т.к. нужно абсолютно точно упорядочить все транзакции.
Дата добавления: 2014-11-16; Просмотров: 359; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |