Поддержка согласованности Транзакции, Корректность конкуррентного выполнения Восстановление после отказов Согласованность в базах данных • Целостность, согласованность и безопасность (integrity, consistency, security) • Конкурентное использование ресурсов корректными программами может привести к некорректным результатам БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 2 Согласованность • Отказы при выполнении программклиентов, СУБД, операционной системы и оборудования могут привести к нарушениям согласованности • Функция СУБД - гарантировать согласованность при конкурентном выполнении и восстановление согласованности после всех видов отказов БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 3 Пример: конкурентное снятие денег Read balance -100 Write balance БД - Поддержка согласованности 950 Read balance 950 -200 750 Write balance 750 850 850 http://WWW.math.spbu.ru/user/boris novikov/courses/ 4 Свойства транзакций: ACID ACID = Atomicity, Consistency, Isolation, Durability • Атомарность: транзакция либо выполняется полностью, либо не оставляет никаких изменений (фиксация или обрыв) • Согласованность: сохранение согласованного состояния данных • Изолированность: Результаты незавершенной транзакции недоступны для других транзакций • Постоянство: результаты успешно завершенной (зафиксированной) транзакции не могут быть потеряны БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 5 Транзакции, истории и расписания • База данных: x, y, z, … • Операции: r(x), w(x) • Транзакции: конечное частично упорядоченное множество операций – r1(x)r1(y) w1(z) • История: (частично) упорядоченное множество операций нескольких транзакций – r1(x)r2(x)w1(x) w2(x) с1 с2 – Операции над одним элементом данных должны быть упорядочены • Расписание: префикс истории БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 6 Фиксация и обрыв • После успешного выполнения всех операций транзакции приложение должно выполнить фиксацию (commit) • Транзакция может быть оборвана явной операцией приложения (abort) или по инициативе СУБД • Фиксации и обрывы реализуют принцип атомарности • Каждая транзакция заканчивается ровно одной из операций commit, abort БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 7 Проблемы, вызванные конкурентностью выполнения • Потеря обновлений – R1(x) r2(x) w1(x) w2(x) • Несогласованное чтение – r1(x) r2(x) r2(y) w2(x) w2(y) r1(y) • Грязное чтение – R1(x) w1(x) r2(x) w2(y) a1 БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 8 Серийное расписание Расписание, в котором все операции любой транзакции либо предшествуют, либо следуют за операциями любой другой транзакции Серийное расписание всегда корректно БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 9 Семантика Эрбрана • Операция чтения возвращает значение, записанное последней предшествующей операцией записи • Записанное значение зависит от предшествующих операций чтения той же транзакции • H(ri(x)) = H(wj(x)), Tj < Ti • H(wi(x)) = f(H(ri(x1)), H(ri(x)2)…) БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 10 Эквивалентность и сериализуемость по конечному состоянию - FSR • Расписания эквивалентны по конечному состоянию, если семантики Эрбрана для всех элементов данных совпадают • Сериализуемость = эквивалентность серийному расписанию • Не предотвращает грязное и несогласованное чтение БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 11 Эквивалентность и сериализуемость по видимому состоянию VSR • Эквивалентность совпадение видимых и конечных состояний всех элементов данных • Сериализуемость эквивалентность серийному • Предотвращает все аномалии • Проверка на основе отношения «читает из» • Высокая вычислительная сложность проверки сериализуемости БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 12 Конфликты • Пара операций из расписания, такая, что – Операции принадлежат разным транзакциям – Работают с одним элементом данных – По крайней мере одна из двух – операция записи Конфликты присутствуют в любом нетривиальном расписании БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 13 Эквивалентность и сериализуемость по конфликтам - CSR • Множество конфликтов расписания содержит пары, в которых первая операция предшествует второй (и пары находятся в конфликте) • Расписания эквивалентны, если их множества конфликтов совпадают • Расписание называется сериализуемым, если оно эквивалентно по конфликтам серийному Сериализуемые расписания корректны БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 14 Критерий сериализуемости • Граф конфликтов (граф сериализуемости) – Вершины соответствуют транзакциям – Дуги проводятся для каждого конфликта в направлении конфликта • Расписание сериализуемо по конфликтам тогда и только тогда, когда граф сериализуемости не содержит контуров БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 15 План доказательства • Граф конфликтов серийного расписания не может иметь контуров, потому что транзакции упорядочены и все дуги направлены от начала к концу расписания • Если граф не имеет контуров, эквивалетное серийное расписание можно построить с помощью топологической сортировки графа БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 16 Сериализуемость по коммутативности • Любые операции чтения коммутируют • Любые операции над разными элементами коммутируют • Расписание сериализуемо по коммутативности, если его можно преобразовать в серийное перестановками соседних операций • Сериализуемость по коммутативности эквивалентна сериализуемости по конфликтам БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 17 Диспетчер транзакций • Модель СУБД: диспетчер (транзакций) и исполнитель запросов • Требования к диспетчеру транзакций: – корректность – производительность • Фактический уровень (псевдо)паралеллизма • Процент оборванных транзакций • Пессимистические и оптимистические протоколы БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 18 Использование замков • Операции установки lr(x), lw(x) и снятия замка ur(x), uw(x) • Cовместимость замков: замки для одного элемента данных несовместимы, если они – устанавливаются разными транзакциями – по крайней мере один из них является замком на запись. • Попытка установки несовместимого замка переводит транзакцию в состояние ожидания • Проблемы, связанные с использованием замков: корректность, тупики, производительность БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 19 Протокол блокирования 2PL • Для каждой операции необходимо предварительно установить замок, все замки должны быть сняты до завершения транзакции • Транзакция не может устанавливать новые замки после того, как она сняла какой-либо из замков БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 20 Корректность 2PL • Двухфазный протокол генерирует расписания, сериализуемые по конфликтам • Lp1(x) < p(x) <up(x) • P1(x) < q2(x), r2(y) < s3(y) – конфликты • Lq2(x) < ur2(y) < ls3(y) БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 21 Тупики • W2(x) w2(y) r1(y) r2(x) • Транзакции, попавшие в тупик, должны быть оборваны • Граф ожиданий – Вершины – активные транзакции – Дуги проводится из ожидающей транзакции в транзакцию, установившую несовместимые замки • Тупик имеет место тогда и только тогда, когда в графе ожиданий имеется контур БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 22 Протокол для деревьев WTL • База данных структурирована как дерево • Протокол: – Все замки – на запись – Для установки замка необходимо иметь установленный замок на родительскую вершину (кроме корня дерева) – Снятие замков возможно в любое время и не препятствует установке новых замков БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 23 Корректность WTL • Граф сериализуемости ацикличен • Пусть y – родитель x, и w1(x) < w2(x), тогда w1(y) < w2(y) • Транзакции сериализуются в том порядке, в котором они устанавливают замки на корень • Протокол WTL свободен от тупиков – Последовательность установки замков определяется последовательностью их установки на корень БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 24 Мультигранулярные замки • База данных представляется как дерево вложенных объектов • Замки – – – – – S: совместное использование X: монопольное использование IS: совместное использование вложенных гранул IX: монопольное использование вложенных гранул SIX: совместное использование гранулы, монопольное для вложенных гранул БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 25 Мультигранулярный 2PL • Для установки S/X необходимо иметь IS/IX на охватывающую гранулу • Правила совметсимости замков основаны на коммутативности • Обычные правила 2PL для всех замков БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 26 Уровни изоляции SQL • • • • Read uncommitted Read committed Repeatable read Serializable • Snapshot isolation- не определяется в стандарте, но используется в промышелнных СУБД, иногда вместо сериализуемости БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 27 Проектирование транзакций в приложении • Атомарность: вывод результатов только после фиксации транзакции • Замки не должны удерживаться в течение длительного времени • Недопустимо взаимодействие с пользователем, пока транзакция не завершена • Ослабленные критерии согласованности при вычислении агрегированных значений БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 28 Optimistic locking • Управление согласованностью на уровне приложений • Предотвращает потери обновления в интернетприложениях • Каждый объект данных (например, строка таблицы) дополняется атрибутом, хранящим время последнего обновления • Данные читаются в режиме read committed и отображаются пользователю • Перед обновлением проверяется время обновления объекта данных, если оно отличается от прочитанного ранее, операция обновления отвергается БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 29 Optimistic locking: уточнения • При проверке корректности необходимо считывать метку всех данных, которые были использованы или показаны пользователю • Проверка только меток обновляемых строк таблиц недостаточна • Вместо меток можно проверять значения всех атрибутов БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 30 Многоверсионные протоколы • Основаны на временном хранении нескольких версий элементов данных • Версии прозрачны для приложения • Обеспечивают нормальное выполнение «опоздавших» операций чтения • Только читающие транзакции никогда не обрываются БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 31 Сериализуемость для многоверсионных расписаний • Многоверсионное расписание должно быть эквивалентно моноверсионному серийному расписанию • Разные версии одного элемента данных не вызывают конфликты • Граф сериализуемости пополняется дугами, описывающими упорядоченность операций записи разных версий одного элемента • Сериализуемость по конфликтам ацикличность пополненного графа сериализуемости БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 32 Snapshot Isolation • Замки только для операций записи • Попытка установки несовместимого замка приводит к обрыву транзакции • Многоверсионность • Не обеспечивает даже сериализуемость по конечному состоянию • Предотвращает наиболее тяжелые виды аномалий • Обладает свойством монотонности r(1(x) r2(x) r1 (y) r2 (y) w1 (x) w2 (y) – snapshot, ноне FSR r1 (x) r1 (y) r2 (x) w1 (y) r2 (y) w2 (y) – CSR, но не snapshot БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 33 Оптимистический протокол управления транзакциями • Фазы выполнения транзакции – Чтение – Проверка – запись • Проверка назад: проверяются конфликты с зафиксированными транзакциями • Проверка вперед: проверяются конфликты с активными транзакциями БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 34 Объектная модель транзакций • Абстрактные операции над объектами • Транзакция: конечное дерево с помеченными вершинами • > Корень помечен идентификатором транзакции • > Некорневые вершины помечены операциями и параметрами • > Листья помечены операциями read/write страничной модели. Определен частичный порядок на листьях (как в страничной модели). БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 35 Пример объектной транзакции БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 36 Пример объектного расписания БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 37 Серийные объектные расписания • Расписание называется серийным, если его корни полностью упорядочены и вершины на каждом уровне полностью упорядочены и изолированы. • Вершина р и ее поддерево называются изолированными, если: – (1) все вершины, кроме предков и потомков р либо предшествуют, либо следуют за потомками р и – (2) каждый уровень в поддереве р полностью упорядочен. БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 38 Расслаиваемые расписания БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 39 Пример корректного расписания БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 40 Расписание на слоях БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 41 Достаточное условие корректности Если расписания на всех слоях расслоенного объектного расписания s сериализуемы по конфликтам с сохранением порядка (е OCSR), то s редуцируемо по коммутативности. БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 42 Использование объектной модели • Страницы и логические записи – Замки и защелки • Строки таблиц и индексы • Вложенные транзакции БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 43 Восстановление после отказов БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 44 Типы отказов • Отказы приложений/транзакции: транзакции обрываются • Отказы системы: функционирование возобновляется после рестарта и восстановления согласованности БД • Разрушение носителя: рестарт, восстановление с резервной копии, восстановление согласованности БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 45 Восстановление оборванных транзакций: откат • Обрывы транзакций могут быть вызваны ошибками при выполнении приложений или невозможностью выполнить транзакцию сериализуемым образом • Операции обрыва $a$ можно заменить на выполнение отката для всех операций записи w-1, включаемых в расписание в обратном порядке с последующей фиксацией БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 46 Восстановимость • Восстановимость расписаний: транзакции должны фиксироваться до того, как их результаты используются другими транзакциями • Пример невосстановимого расписания – W1(x) w2(x) c2 a1 • S2L (Двухфазный протокол с удержанием замков на запись до конца транзакции) гарантирует восстановимость БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 47 Восстановление после системных отказов • Необходим рестарт сервера БД • Для того, чтобы восстановление было возможным, необходимо вести журнал обновлений • При нормальной работе БД все изменения записываются в журнал • При рестарте журнал используется для повторения операций и для отката незавершенных транзакций БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 48 Ведение журнала • Журнал ведется последовательно • Опережающая запись в журнал (WAL, writeahead log) • Регистрируются операции записи, начала и конца транзакций • Каждая запись может (должна) содержать данные отката (undo) и «наката» (redo) • При фиксации запись журнала обязательно выталкивается на диск БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 49 Что нужно сделать при восстановлении • Определить, какие транзакции были зафиксированы до отказа и какие были активными (не завершены) • Если необходимо, повторить изменения зафиксированных транзакций • Оборвать незавершенные до отказа транзакции (выполнить откат) БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 50 Запись обновлений базы данных • Только при фиксации (force, no steal) – Данные undo и redo не нужны • Только после фиксации (no force, no steal) – Необходимы только данные redo • Обязательно до фиксации (force, steal) – Требуются только undo • Полностью асинхронно (no force, steal) – Требуются undo и redo БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 51 Алгоритм восстановления при рестарте • Фаза просмотра: найти все зафиксированные и активные транзакции (прямой просмотр журнала) • Фаза наката (redo): при прямом просмотре, выполнить все операции зафиксированных транзакций • Фаза отката (undo): обратный просмотр журнала, откат всех операций незавершенных транзакций БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 52 Завершение восстановления • После завершения фазы отката необходимо – Записать на диск все измененные блоки БД – После записи БД можно очистить журнал • Возобновить нормальную работу системы БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 53 Корректность алгоритма восстановления • Восстанавливает согласованное состояние (такое, как после всех зафиксировнных транзакций) • Допускает многократные рестарты БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 54 Алгоритм восстановления Redo History • Анализ: обнаружение транзакций, подлежащих обрыву • Redo: повторное выполнение всех операций , записанных в журнал • Undo: откат незафиксированных транзакций • Первые две фазы можно совместить БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 55 Сравнение алгоритмов восстановления • Redo History : выполняется больше операций наката • Фаза отката может быть совмещена с нормальной обработкой новых транзакций (необходимы замки на обновления оборванных транзакций) БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 56 Контрольные точки • Для сокращения времени восстановления записываются контрольные точки • При записи контрольной точки все измененные блоки записываются на диск и делается запись о контрольной точке в журнале • При рестарте фазу наката можно начинать с последней контрольной точки БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 57 Контрольные точки малого веса • Запись журнала содержит информацию об активных транзакциях и список грязных страниц • Запись грязных страниц выполняется асинхронно • Все страницы, включенные в контрольную точку, должны быть записаны до следующей контрольной точки • Восстановление можно начинать с предпоследней контрольной точки БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 58 Характеристики защищенности • Доступность • Надежность • Выживаемость БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 59 Защита от разрушения носителя • Создание резервных копий – Экспорт данных – Offline backup – Копирование средствами операционной системы – Online backup • Специальное оборудование (зеркальные дисковые системы) • Серверы в горячем резерве (stand-by) БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 60 Копии в горячем резерве • Основной и дополнительные серверы • Распространение изменений – Синхронное внесение изменений – Повторение транзакций – Пересылка и повторение журнала – Накат по журналу с задержкой БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 61 Кластер с зеркальными дисками Сервис базы данных Экземпляр сервера БД Экземпляр сервера БД БД БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 62 Сервер в горячем резерве Основной сервер БД Запасной сервер БД БД БД БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 63 Распределенные базы данных • Цели создания распределенных систем: – Доступность – Надежность • Типы распределенных систем: – Фрагментация • Вертикальная • Горизонтальная – Раскопирование (replication) Select * from dept@remote.server БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 64 Горизонтальная фрагментация: разделы • Большая таблица может быть распределена на несколько серверов • Фрагмент, размещенный на одном сервере – partition • Разделы полезны и в централизованных системах БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 65 Транзакции в распределнных системах • Глобальная транзакция состоит из нескольких локальных подтранзакций • Для обеспечения корректности необходима координация локальных диспетчеров БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 66 Недостаточность локальной сериализуемости • Все локальные подтранзакции должны фиксироваться в одном и том же порядке • Локальные транзакции могут изменить упорядоченность r2(x) r1 (x) w1(x) c1 r3 (y) w3(y) c3 T3 < T2 < T1 БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ r2 (y) c2 67 Протокол 2PL в распределенных системах • Ведение замков – Центральный сервер – Раскопированный сервер • Необходима доступность управления замками • Низкая производительность БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 68 Протокол на основе меток времени TS • Транзакции помечаются метками времен своего начала • Каждый элемент хранит метки записавшей и последней читавшей транзакций • Чтение запрещается, если элемент данных записан после начала транзакции • Запись отвергается, если элемент прочитан после начала транзакции БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 69 Корректность протокола TS • Транзакции сериализуются в порядке меток времени начала транзакций • В распределенных системах – Метки времени для данных можно проверять локально – Применение протокола затруднено из-за необходимости синхронизации часов • Leslie Lamport – LaTeX – Часы для распредленных систем БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 70 Протокол двухфазной фиксации 2PC (two-phase commit) • Координатор транзакции • Для обрыва глобальной транзкции достаточно обрава любой из локальных • Фиксация (нормальная работа) – Фаза подготовки • Координатор рассылает сообщение «подготовиться» • ответ «готов к фиксации» – Фаза завершения • Координатор рассылает «фиксируем» • Ответ: «Зафиксирована» БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 71 2PC - восстановление • После рестарта необходимо обработать транзакции в состоянии «готова», но не «зафиксирована» • Для выяснения судьбы транзакции необходимо обратиться к координатору • Если координатор не отвечает, может знать любой из участников • В некоторых случаях решение невозможно БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 72 Раскопированные БД • Каждая копия предоставляет согласованную версию базы данных • Простейший протокол: одновременное обновление всех копий • Высокая доступность по чтению, низкая по обновлениям БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 73 Мажоритарный протокол • При нарушении связности обновления разрешаются в том случае, если компонента связности содержит больше половины копий • Чтение разрешается в любом случае, для обновления необходимо предварительно получить последнее состояние элемента данных • Корректность: для любого элемента данных последнее состояние имеется не менее чем на половине копий БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 74 Отложенная согласованность (eventual consistency) • Асинхронное отложенное распространение обновлений раскопированных данных • Выполнение обновлений и фиксация транзакций выполняются без задержек • Любые обновления могут быть потеряны, последний записавший выигрывает • Ответственность за согласованность перекладывается на приложение БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 75 Схемы распределенных БД • В SQL можно использовать только объекты, определенные в схеме • Построение глобальной схемы затруднено из-за ее сложности • В распределенной системе не должно быть централизованных структур • Решение: в схему любого узла распределенной системы могут включаться объекты, определенные в других системах БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 76 Распределенные системы на основе промышленных СУБД • Связи между серверами баз данных Select * from person@remote.db • Прозрачность: использование синонимов и представлений • Фрагментация: partitioned tables • Раскопирование: материализованные представления, триггеры БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 77 Ограниченность классической модели транзакций • ACID свойства могут быть слишком ограничительны • Атомарность: нет возможности сохранить хотя бы часть результатов больших вычислений • изоляция: невозможно получить результаты до окончания транзакции • В распределенных системах необходима доступность всех участников транзакции БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 78 Примеры классов приложений • Продолжительные активности с участием человека • Совместная работа над общими данными • Распределенные системы с мобильными компонентами • Системы очень большого размера (требуются другие критерии согласованности) БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 79 Расширенные модели транзакций • Вложенные (nested) транзакции – Подтранзакции выполняются конкурентно – Обрыв подтранзакции не влечет обрыва родительской – Понятие компенсации: при отсутствии изоляции откат невозможен • Долгоживущие транзакции и саги – цепочки атомарных транзакций, компенсации • Потоки работ (workflow) БД - Поддержка согласованности http://WWW.math.spbu.ru/user/boris novikov/courses/ 80