Методы управления транзакциями в XML

реклама
Российская Академия Наук
Институт Системного Программирования
УДК 681.3.06
на правах рукописи
Плешачков Петр Олегович
Методы управления транзакциями в
XML-ориентированных СУБД
Специальность 05.13.11 —
математическое и программное обеспечение вычислительных
машин, комплексов и компьютерных сетей
АВТОРЕФЕРАТ
диссертации на соискание ученой степени
кандидата физико-математических наук
МОСКВА 2006
Работа
выполнена
в
Институте
cистемного
программирования
Российской академии наук.
Научный руководитель:
доктор технических наук
Кузнецов Сергей Дмитриевич.
Официальные оппоненты:
доктор физико-математических наук,
профессор
Новиков Борис Асенович;
кандидат технических наук,
доцент
Когаловский Михаил Рувимович.
Ведущая организация: Институт механики МГУ им. М. В. Ломоносова
Защита диссертации состоится “10” ноября 2006 года в 15 часов на
заседании диссертационного совета Д 002.087.01 в Институте системного
программирования Российской академии наук по адресу: 109004, Москва,
ул. Большая Коммунистическая, д. 25.
С диссертацией можно ознакомиться в библиотеке Института системного
программирования РАН.
Автореферат разослан “5” октября 2006 г.
Ученый секретарь
диссертационного совета
канд. физ.мат. наук
С.П. Прохоров
3
Общая характеристика работы
Актуальность темы
В настоящее время язык XML используется как основное средство для
представления слабоструктурированных данных.
массивы XML-данных,
управления.
Накоплены огромные
для которых необходимы развитые средства
Это стимулировало бурное развитие XML-ориентированных
СУБД, позволяющих управлять XML-данными.
СУБД разделяются на два класса:
XML-ориентированные
СУБД с поддержкой XML (как
правило, это реляционные СУБД), в которых поддержка XML реализована
над существующей моделью данных,
и прирожденные XML-СУБД,
спроектированные изначально с учетом XML-модели данных. Важнейшим
компонентом в этих системах является подсистема управления XMLтранзакциями, которая должна обеспечивать изолированность, атомарность
и надежность транзакций, выполняемых над хранимыми XML-данными.
При этом в СУБД с поддержкой XML, как правило, существует некоторый
механизм управления транзакциями, а в прирожденных XML-СУБД этот
механизм должен разрабатываться с нуля.
Средства изоляции транзакций, имеющиеся в СУБД с поддержкой
XML, плохо подходят для XML-данных, поскольку в них не учитывается
иерархическая структура XML-данных и семантика XML-операций.
В
частности, использование средств изоляции транзакций, разработанных
в
рамках
реляционных
систем,
приводит
к
большому
искусственных конфликтов между XML-транзакциями.
количеству
Иными словами,
во многих ситуациях система фиксирует конфликт между параллельными
XML-транзакциями и выполняет их последовательно, хотя на логическом
уровне конфликта между XML-транзакциями нет.
Это в свою очередь
4
негативно влияет на пропускную способность и время отклика транзакций
в СУБД. Эти факторы стимулируют разработку новых средств изоляции
транзакций для СУБД с поддержкой XML, учитывающих в полной мере
специфику XML-модели данных.
При этом в новом механизме должен
учитываться уже существующий в СУБД механизм изоляции транзакций,
и разумно использовать некоторые возможности существующего механизма
при реализации нового.
Механизмы изоляции транзакций в большинстве прирожденных XMLСУБД находятся, в лучшем случае, в зачаточном состоянии, что затрудняет
практическое использование этих СУБД. При разработке механизмов
изоляции транзакций необходимо учитывать как особенности XMLмодели данных, так и то требование, что механизм изоляции транзакции
в
прирожденных
XML-СУБД
должен
обеспечивать
неконфликтное
выполнение читающих и изменяющих транзакций. Последнее требование
объясняется тем, что во многих случаях прирожденные XML-СУБД
используются как среда выполнения длинных приложений, написанных
на функциональном языке XQuery. Необходимо, чтобы выполнение этих
приложений не приводило к блокировке изменяющих транзакций.
Другой важной проблемой прирожденных XML-СУБД является
обеспечение свойств атомарности и надежности транзакций, поскольку
организация внешней памяти и обработка XML-данных в оперативной
памяти в этих системах существенно отличаются от аналогов, применяемых
в реляционных базах данных.
Из вышеописанного следует необходимость решения этих проблем, что
и определяет актуальность диссертационной работы.
Цель и задачи работы
Целью диссертационной работы является исследование и разработка новых
методов управления транзакциями в XML-ориентированных СУБД, в полной
5
мере учитывающих иерархическую структуру XML и семантику XMLопераций. Для достижения этой цели были поставлены следующие задачи:
1. Разработка
протокола
изоляции
XML-транзакций
для
XML-
ориентированных СУБД, в полной мере учитывающего специфику
XML-модели данных.
2. Разработка метода управления конкурентными XML-транзакциями в
СУБД с поддержкой XML на основе универсального протокола изоляции
XML-транзакций.
3. Разработка метода изоляции XML-транзакций в прирожденных XMLСУБД, учитывающего как специфику XML-модели данных, так и
специфику использования прирожденных XML баз данных.
4. Разработка методов обеспечения атомарности и надежности транзакций
в прирожденных XML-СУБД.
Научная новизна
Научной новизной обладают следующие результаты диссертационной работы:
1. Разработан новый протокол изоляции XML-транзакций XDGL для XMLориентированных СУБД, основанный на описывающей схеме XMLдокумента.
2. Предложен новый семантический метод управления XML-транзакциями
для реляционных СУБД с поддержкой XML на основе двухуровневой
модели транзакций.
3. Разработан новый версионный протокол 4VXDGL изоляции XMLтранзакций для прирожденных XML-СУБД, в котором учитываются
как особенности организации внешней памяти, так и методы управления
6
оперативной памятью в этих СУБД; протокол позволяет выполнять
читающие и изменяющие транзакции без взаимных блокировок.
4. Разработаны новые методы обеспечения атомарности и надежности
транзакций в прирожденных XML-СУБД, опирающиеся на механизм
версионности данных.
Практическая значимость
Разработанные методы могут применяться в XML-ориентированных СУБД,
для которых требования согласованности и надежности данных играют
определяющую роль. Разработанный протокол изоляции XML-транзакций
XDGL может применяться в широком классе систем управления XMLданными и позволяет существенно увеличить параллелизм транзакций
в системе, обеспечивая, тем самым, более высокую производительность
системы.
Кроме того, разработанные методы обеспечения надежности
и атомарности XML-транзакций могут служить основой для создания
прирожденных XML-СУБД.
На основе предложенных методов и подходов разработаны: (1) прототип
семантического менеджера управления XML-транзакциями SXTM над
реляционной СУБД MS SQL Server 2005; (2) прототип менеджера управления
XML-транзакциями, используемый в качестве основы для создания в ИСП
РАН промышленной прирожденной XML-СУБД Седна.
Апробация работы и публикации
По материалам диссертации опубликовано восемь работ [1-8].
Основные
положения работы докладывались на следующих конференциях и семинарах:
• на девятой международной конференции в области баз данных и
информационных систем (ADBIS) (2005 г);
7
• на двадцать второй британской национальной конференции по базам
данных (BNCOD) (2005 г);
• на
симпозиуме
аспирантов
на
двадцать
третьей
британской
национальной конференции по базам данных (PhD Forum BNCOD)
(2006 г);
• на первом и втором весеннем коллоквиуме молодых исследователей в
области баз данных и информационных систем (SYRCoDIS) (2004 и
2005 гг);
• на сто третьем семинаре Московской Секции ACM SIGMOD (2005 г);
• на семинаре “Современные сетевые технологии” под руководством д.ф.м.н., профессора Васенина В.А. (2006 г).
Структура и объем диссертации
Работа состоит из введения, пяти глав, заключения и списка литературы.
Общий объем диссертации составляет 166 страниц.
Список литературы
содержит 100 наименований.
Краткое содержание работы
Во
введении обосновываются цель и задачи данной работы,
актуальность, научная новизна и практическая значимость.
ее
Приводится
краткий обзор работы.
Первая глава является обзорной и содержит изложение методов и
средств, которые лежат в основе разработок, описываемых в последующих
четырех главах.
В первом разделе данной главы дается обзор существующих методов
управления транзакциями.
Рассматриваются протоколы сериализации
8
транзакций, основанные на блокировках, временных метках, а также
версионые методы. Кроме того, обсуждаются основные методы обеспечения
атомарности и надежности транзакций.
Рассматриваются два базовых
метода восстановления физически целостного состояния после мягких сбоев:
теневой механизм и полная журнализация всех произведенных модификаций
в БД.
Во втором разделе делается обзор технологий платформы XML
в
приложении
к
Рассматриваются
управлению
язык
слабоструктурированными
XML
как
формат
для
данными.
представления
слабоструктурированных данных, язык путевых выражений XPath, язык
запросов XQuery, а также язык модификаций XUpdate.
Третий
раздел
посвящен
обзору
XML-ориентированных
СУБД.
Приводится классификация XML-ориентированых СУБД на два класса. В
первый класс входят СУБД, в которых поддержка XML реализована поверх
уже существующей модели данных.
На сегодняшний день среди систем
этого типа наиболее развиты средства поддержки XML в реляционных
СУБД (РСУБД). Во второй класс входят СУБД, изначально построенные
с учетом модели данных XML. Этот тип систем на сегодняшний день
переживает бурный этап развития.
За счет того, что на модельном и
физическом уровнях эти системы учитывают особенности XML, они более
эффективны для управления XML-данными, чем СУБД первого класса.
Системы управления базами XML-данных, построенные с нуля и в полной
мере основанные на модели данных XML мы называем прирожденными
XML-СУБД (или XML-СУБД).
Методы поддержки XML в РСУБД можно разделить на три типа.
К первому типу относятся XML-представления, которые появились в
РСУБД достаточно давно, и позволяют реализовать XML-оболочку между
реляционным хранилищем данных и приложениями. XML-представления
позволяют интегрировать в один общий XML-документ уже существующие
9
(legacy) реляционные данные. При этом, как правило, в РСУБД развиты
средства выборки XML-данных через XML-представления, но средства
изменения данных через XML-представления либо развиты очень слабо, либо
вообще отсутствуют в РСУБД.
Ко второму типу относятся методы хранения XML-документов,
основанные
на
отображении
XML-документов
на
отношения.
Рассматриваются основные методы декомпозиции XML-документов на
таблицы, среди которых методы Edge, Attribute, Inlining и STORED.
К третьему типу относятся методы хранения XML-документов в
атрибутах специального типа - XML. Этот тип данных сравнительно
недавно появился в языке SQL у большинства производителей РСУБД.
Надо отметить,
функциональность
что тип данных XML предоставляет наибольшую
по
управлению
XML-документами
в
РСУБД.
Действительно, метод хранения в данном случае максимально приближен
к прирожденным методам хранения XML-документов.
Кроме того, для
типа данных XML можно создавать специальные индексы.
Оба этих
факта положительно влияют на эффективность выполнения запросов на
чтение и изменение XML-документов.
Фактически, с появлением типа
данных XML можно говорить, что в РСУБД появилась поддержка XML,
максимально приближенная к прирожденным СУБД, которые обсуждаются
в заключительном разделе обзорной главы.
В обзоре прирожденных XML-СУБД рассматриваются архитектурные и
физические особенности СУБД Седна, которая разрабатывается в течении
последних трех лет в ИСП РАН. Описывается метод хранения XMLдокументов во внешней памяти, основанный на кластеризации дескрипторов
узлов XML-документа, соответствующих одному узлу описывающей схемы.
При этом взаимосвязи между дескрипторами узлов реализуются на основе
указателей.
Отмечается, что эффективность перехода по указателям
существенно влияет на общее время выполнения запросов к БД. Наконец,
10
описывается механизм управления памятью, основанный на слоистой
организации адресного пространства базы данных, который обеспечивает
эффективную поддержку операции перехода по указателям.
Вторая глава посвящена описанию и анализу существующих методов
управления параллельными транзакциями в XML-ориентированных СУБД.
В
первом
управления
разделе
главы
транзакциями,
анализируется
реализованных
в
применимость
РСУБД,
для
методов
XML.
Рассматриваются пять типичных сценариев поведения конкурентных
XML-транзакций, на которых показывается, что блокировочный механизм,
реализованный в РСУБД, порождает большое количество искусственных
конфликтов между конкурентными транзакциями.
Это происходит из-за того, что поддержка XML в РСУБД реализуется
в виде некоторой надстройки над реляционной моделью.
Но реальная
обработка XML-запросов происходит в реляционном ядре СУБД. Когда
XML-запрос доходит до реального выполнения, он уже транслирован
в набор SQL-запросов, и подсистема выполнения воспринимает их как
обычные запросы над реляционными данными. В результате, во многом
теряется информация о иерархической структуре XML и семантике XMLзапросов. Так, путевые выражения транслируются в операции соединения
реляционных таблиц, что в свою очередь может приводить к сканированию
(и блокировке) большого количества кортежей, которые не влияют на
результат XML-запроса.
Также из-за того, что кортежи в отношениях
неупорядочены, а в XML-документе все узлы упорядочены, возникает задача
явного поддержания порядка узлов в XML-документе при отображении на
реляционные таблицы, а это в свою очередь приводит к необходимости
поддержания этого явного порядка при вставке новых узлов.
Таким
образом, вставка одного узла может потребовать изменение (и блокировку)
всех кортежей, которые представляют узлы XML-документа, следующие за
вставляемым узлом.
11
Именно эти причины и приводят к тому, что реляционный менеджер
блокировок во многих случаях создает искусственные конфликты между
транзакциями, даже если он использует блокировки на уровне кортежей (или
предикатные блокировки).
В результате появления большого количества
искусственных конфликтов между транзакциями существенно снижается
пропускная способность и время отклика транзакций в РСУБД.
В случае хранения XML-документа в атрибуте с типом XML ситуация
с блокировками еще ухудшается, поскольку в этом случае блокируется весь
XML-документ. На данный момент в РСУБД не разработаны какие-либо
специальные средства блокирования отдельных узлов в XML-документе,
хранимом в атрибуте с типом XML.
Во втором разделе главы рассматриваются существующие методы
управления транзакциями в прирожденных XML-СУБД.
В начале раздела анализируется применимость древовидного протокола,
а также протокола гранулированных блокировок для XML. Делается вывод
о том, что оба эти протокола не подходят для XML. В частности, при
использовании гранулированных захватов всегда неявно захватывается все
поддерево, что для XML во многих случаях является избыточным. В свою
очередь, древовидный протокол накладывает слишком строгие ограничения
на направление перемещения по XML-документу: при переходе от одного
узла к другому можно перемещаться только сверху-вниз. В то же время
в XPath существуют оси, которые позволяют перемещаться по XMLдокументу влево, вправо, вверх и вниз от заданного узла. Таким образом,
с использованием древовидного протокола можно поддерживать только
ограниченное подмножество XPath.
Во второй части раздела рассматриваются методы изоляции DOMопераций.
Отмечается, что предложенные методы хорошо подходят
для синхронизации параллельных DOM-операций.
Но в современных
СУБД доступ к данным, как правило, осуществляется при помощи
12
языков запросов XQuery/XUpdate. Поэтому, по мнению автора, протокол
синхронизации должен учитывать специфику именно этих языков. Кроме
того, предложенные методы требуют непосредственный доступ к дереву
XML-документа, что в некоторых случаях может быть невозможно.
Наконец в заключительной части раздела рассматривается протокол,
основанный на блокировании путей. Однако этот протокол рассматривает
слишком ограниченное подмножество XPath. Кроме того, операция проверки
блокировок на совместимость является дорогой операцией по времени.
Основным результатом главы является вывод о том, что существующие
методы синхронизации конкурентных транзакций не подходят для XML
и поэтому необходима разработка новых методов управления XMLтранзакциями.
Третья глава посвящена описанию разработанного автором протокола
изоляции
XML-транзакций
XDGL
(XPath-based
DataGuide
Locking),
основанного на двухфазном протоколе блокирования.
При разработке протокола XDGL учитывался тот факт, что при его
реализации внутреннее представление XML-документа в базе данных может
быть недоступно.
Поэтому в XDGL блокировки устанавливаются не на
узлах самого XML-документа, а на узлах описывающей схемы, которая
является структурным обобщением XML-документа.
В описывающей
схеме представлены по одному разу все пути, существующие в XMLдокументе. Поскольку одному пути, как правило, соответствует много узлов
в XML-документе, то размер описывающей схемы гораздо меньше размера
соответствующего ей XML-документа. Поэтому дополнительные издержки,
связанные с поиском необходимых узлов в описывающей схеме, а также
установкой блокировок на схеме, сравнительно небольшие.
Кроме
того,
использование
описывающей
схемы
позволяет
абстрагироваться от системы хранения XML-документа, что, в свою
очередь, ведет к универсальности XDGL: он может быть реализован над
13
любой системой хранения XML-документов.
В XDGL выделяется несколько типов ограничений, накладываемых
на
XML-документ.
Для
каждого
соответствующий тип блокировок.
типа
ограничений
существует
Кроме того, в XDGL учитываются
семантические особенности операций XQuery и XUpdate, что позволяет
уменьшить гранулированность синхронизационных захватов и увеличить
параллелизм конкурентных транзакций.
К первому типу относятся ограничения на структуру XML-документа.
Этому ограничению соответствуют структурные блокировки.
В XDGL
вводится 11 типов структурных блокировок: P , S, SI, SA, SB, X, XN ,
ST , XT , IS и IX. Выделяется два типа структурных блокировок: узловые
и древовидные.
Узловые блокировки накладывают ограничения только
на выполнение операций над узлами XML-документа, соответствующих
блокируемому узлу схемы, а древовидные блокировки неявно накладывает
ограничения на выполнение операций над поддеревьями в XML-документе,
соответствующих блокируемому узлу. К узловым относятся блокировки P ,
S, SI, SA, SB, X и XN .
Ко второму типу относятся ограничения на значения узлов в XMLдокументе, выражаемые при помощи предикатов. Этому типу ограничений
соответствуют
предикатные
структурными блокировками.
блокировки,
которые
Таким образом,
ассоциируются
со
совместимость двух
структурных блокировок возможна в двух случаях: (1) типы структурных
блокировок совместимы или (2) коньюнкция предикатов, ассоциированных
со структурными блокировками, тождественно равна f alse.
Кроме того, вводятся логические блокировки,
которые являются
комбинацией структурных и предикатных блокировок. В XDGL логические
блокировки служат для предотвращения фантомов.
Основным компонентом, отвечающим за реализацию протокола XDGL,
является XDGL-планировщик. В работе формально описан алгоритм работы
14
XDGL-планировщика, доказан ряд свойств XDGL-планировщика, а также на
основе этих свойств обоснована его корректность.
Введем ряд определений и обозначений.
Определение 1 Транзакцией Ti мы будем называть последовательность
пар (opj , Ti). Причем последней в этой последовательности всегда является
операция фиксации транзакции.
Определение 2 Планом S множества транзакций T = {T1, T2, ..., Tn} мы
будем называть перемешанную последовательность операций транзакций
из T (при этом порядок операций в транзакциях не меняется).
Определение 3 Мы будем обозначать символом LSi множество всех
блокировок, установленных транзакциями после выполнения i-го шага в
плане S.
Определение 4 Мы будем говорить, что план S является допустимым,
тогда и только тогда, когда на каждом шаге i в плане S множество всех
установленных блокировок LSi содержит только совместимые блокировки
(разных транзакций), в соответствии с матрицей совместимости
протокола XDGL.
Определение 5 Планы S и S ′ мы будем называть эквивалентными, если
(1) план S является перестановкой плана S ′ (при этом порядок операций в
транзакции сохраняется), (2) после выполнения планов S и S ′ полученные
документы являются одинаковыми, и (3) все запросы в плане S возвращают
те же ответы, что и соответствующие запросы в плане S ′.
Определение 6 План S называется сериальным, если для произвольных
двух транзакций Ti и Tj из плана S все операции транзакции Ti
предшествуют (или следуют) всем операциям транзакции Tj .
15
Определение 7 План S является сериализуемым если он эквивалентен
какому-нибудь сериальному плану.
Определение 8 Мы будем обозначать символом liS (opi) множество всех
блокировок, установленных (или освобожденных) в ходе выполнения
операции opi в плане S.
Определение 9 Мы будем обозначать символом DiS документ (или набор
документов), полученный после выполнения i-ой операции в плане S.
Свойства протокола XDGL формулируются в следующих трех леммах.
Отметим, что далее в этом разделе мы будем считать, что план S ′ отличается
от плана S перестановкой двух смежных пар (opi, Ti) и (opi+1, Tj ) (Tj < Ti ).
Лемма 1 Если план S является допустимым, то и план S ′ также
является допустимым.
Лемма 2 Если план S является допустимым, и, по крайней мере, одна
из операций opi или opi+1 в плане S является запросом на выборку, то
результаты выполнения этого (этих) запроса (запросов) на выборку в
планах S и S ′ одинаковые.
′
S
S
= Di+1
Лемма 3 Если план S является допустимым, то Di+1
.
На основе лемм 1, 2 и 3 доказывается теорема о корректности протокола
XDGL:
Теорема 1 Все
планы
S,
сгенерированные
XDGL-планировщиком,
являются сериализуемыми.
В конце главы обсуждаются дополнительные оптимизации в XDGL,
которые возможны при наличии предписывающей схемы XML-документа
(будем считать, что предписывающая схема представлена в виде DTD).
16
Отмечается, что в описывающей схеме теряется очень важная информация
о документе - порядок следования узлов и множественность узлов, в то
время как из DTD такую информацию можно получить.
На основе
информации о порядке дочерних узлов удается оптимизировать количество
необходимых блокировок при вычислении осей preceding-sibling и followingsibling. Информация о множественности узлов используется при разрешении
конфликтов на одном узле схемы за счет проверки предикатов на других
узлах схемы.
В четвертой главе описывается предложенный автором метод
управления XML-транзакциями в реляционных СУБД (РСУБД). Метод
основывается на применении протокола XDGL для семантической изоляции
XML-транзакций в рамках двухуровневой модели транзакций.
В этой модели набор запросов пользователя, для которых требуется
наличие свойств атомарности и изолированности, образует глобальную
транзакцию. Дополнительный менеджер транзакций SXTM (Semantic XML
Transaction Manager), построенный над РСУБД, декомпозирует исходную
глобальную транзакцию на набор субтранзакций (DB-транзакций) к РСУБД.
При
использовании
этого
метода
мы
получаем
очень
важное
преимущество. На втором уровне менеджер XML-транзакций при принятии
решения о конфликте между транзакциями может учитывать семантику
XML-операций и устанавливать “семантические” блокировки до конца
транзакции. В свою очередь, DB-транзакция завершается и освобождает
“грубые” блокировки гораздо раньше завершения глобальной транзакции.
За счет этого можно увеличить параллелизм конкурентных транзакций.
Одним из ключевых вопросов при реализации протокола XDGL над
РСУБД является поддержка описывающей схемы в актуальном состоянии.
Для этого автор разработал два метода.
В первом методе используется
предписывающая схема XML-документа, по которой заранее вычисляются
все возможные пути в XML-документе. На их основе строится описывающая
17
схема.
Во втором методе предполагается, что априори предписывающая
схема XML-документа неизвестна.
Для этого случая описывается метод
поддержки описывающей схемы в актуальном состоянии за счет вычисления
новых потенциальных узлов в схеме, которые могут появиться в XMLдокументе при выполнении очередной операции изменении XML-документа.
При декомпозиции исходной глобальной XML-транзакции на набор
независимых
DB-транзакций
атомарность
и
надежность
глобальных
транзакций не может гарантироваться РСУБД, поскольку в РСУБД
ничего не известно о глобальных XML-транзакциях.
Поэтому в SXTM
присутствует дополнительный менеджер восстановления XML-транзакций.
Для реализации менеджера восстановления транзакций в РСУБД
создается дополнительная таблица (журнал), в которую заносятся все
операции изменения, производимые над XML-документами.
Причем
вставка в эту таблицу осуществляется в рамках DB-транзакции, в которой
выполняется операция изменения.
Таким образом, в случае мягкого
сбоя системы после восстановления базы данных средствами РСУБД в
журнале окажутся только записи для зафиксированных DB-транзакций.
Других записей не будет, поскольку РСУБД гарантирует атомарность DBтранзакций.
Важным следствием этого свойства является то, что менеджеру
восстановления SXTM никогда не требуется производить повторное
выполнение (REDO) XML-операций, поскольку при выполнении операции
фиксации XML-транзакции, когда производится вставка в журнал записи
COMMIT для этой транзакции, происходит фиксация последней DBтранзакции. Таким образом, тот факт, что SXMT успешно зафиксировал
XML-транзакцию, означает, что РСУБД успешно зафиксировала все
субтранзакции, и поэтому при восстановлении после сбоя повторное
выполнение всех субтранзакций будет выполнять РСУБД.
В работе приводятся алгоритмы восстановления глобальных транзакций
18
в случае индивидуальных сбоев или краха всей системы. Отмечается, что
для корректной работы этих алгоритмов при откате транзакций необходимо
заносить в журнал компенсационные записи, которые предотвращают
ситуации, при которых одна операция откатывается два раза.
В конце главы приводится экспериментальная оценка предложенных
методов управления XML-транзакциями по сравнению с существующими
в РСУБД. Эта оценка демонстрирует, что SXTM позволяет существенно
уменьшить время отклика транзакций, а также увеличить пропускную
способность транзакций в РСУБД при наличии конкурентных транзакций
на чтение и изменение XML-документов.
В пятой главе описывается предлагаемый автором метод управления
транзакциями в прирожденных XML-СУБД, основанный на версионном
механизме.
В первом разделе главы формулируются следующие специфичные
требования к управлению транзакциями в XML-СУБД:
• Читающие транзакции не должны конфликтовать с изменяющими
транзакциями.
• Метод изоляции изменяющих транзакций не должен приводить к
большому количеству псевдоконфликтов между этими транзакциями.
Кроме того, накладные расходы, связанные с изоляцией изменяющих
транзакций, должны быть невелики.
• Версионный механизм не должен существенно влиять на эффективность
операции переходов по указателям.
• Версионный механизм не должен приводить к неограниченному росту
размера базы данных.
• Методы управления транзакциями не должны накладывать какие-либо
ограничения на политику вытеснения блоков из буферной памяти.
19
Во втором и третьем разделах формулируется понятие снимка базы
данных, и определяется процедура продвижения снимков.
Но перед их
рассмотрением мы введем несколько обозначений.
Транзакции, осуществляющие только чтение элементов базы данных, мы
будем обозначать символом T r . Транзакции, осуществляющие как чтение
элементов базы данных, так и их изменение, будем обозначать символом T w .
Элемент базы данных будем обозначать символом x, а символом xi - i-ю
физическую версию элемента x. Наконец, временную метку версии xi мы
будем обозначать символом ts(xi).
Определение 10 Консистентным снимком базы данных, сделанным в
момент времени t, мы будем называть такое состояние базы данных,
в котором каждый элемент x базы данных представлен версией
xi , удовлетворяющей двум условиям:
(1) xi создана транзакцией,
зафиксированной в момент времени, меньший чем t, и (2) не существует
другой версии xj , удовлетворяющей условиям (1) и ts(xi) < ts(xj ) < t.
В работе предлагается использовать два консистентных снимка базы
данных St0 и St1 (t0 < t1) для изоляции T r и T w транзакций. На каждом
из этих снимков выполняется набор T r транзакций.
транзакции выполняются на новом St1 снимке.
Причем новые T r
В результате, когда все
T r транзакции, выполняющиеся на старом снимке St0 , завершатся, можно
произвести продвижение снимков, при котором новый снимок становится
старым, а консистентный снимок БД на текущий момент времени становится
новым снимком. Отмечается, что эта операция может выполняться очень
эффективно, поскольку она не требует доступа к диску.
Кроме того,
использование двух снимков позволяет реализовать процедуру продвижения
снимков без приостановки читающих транзакций.
В четвертом разделе определяются четыре логические версии элемента
базы данных x, которые возникают при использовании двух снимков
20
БД: (1) версия, необходимая для старого снимка St0 , которую мы будем
обозначать xSt0 ; (2) версия, необходимая для нового снимка St1 , которую мы
будем обозначать xSt1 ; (3) последняя зафиксированная версия элемента (эта
версия будет использоваться в очередном снимке), которую мы обозначим
xLC , и (4) версия, в которой производятся изменения текущей транзакцией,
которую мы будем обозначать xW (эта версия отражает незафиксированное
состояние элемента). А также отмечается, что одна физическая версия может
соответствовать нескольким логическим версиям.
Кроме того, вводятся
правила переходов физических версий от одного множества логических
версий в другое.
Также отмечается, что переходы физических версий
осуществляются неявно, а соответствие физической версии множеству
логических версий определяется динамически при обращении к странице с
данными.
В пятом разделе вводится механизм адресации версий, в котором
вводится два уровня адресации: логический и физический. Все связи между
узлами XML-документа описываются при помощи адресов логического
уровня, а поиск необходимой версии осуществляется по физическим адресам.
При этом физический адрес последней версии совпадает с ее логическим
адресом. Такой подход позволяет находить нужную физическую версию
максимум при одном дополнительном обращении к диску.
Также в этом разделе обосновывается выбор версионности на уровне
блоков БД, что объясняется стремлением реализовать операцию перехода
по указателю эффективно. Действительно, в случае выбора версионности
на уровне блока дорогостоящая операция выбора необходимой версии для
транзакции выполняется достаточно редко. И кроме того весь механизм
версионности удается реализовать в менеджере буферов, а подсистема
выполнения запросов работает с БД так же, как если бы одна была
одноверсионной.
метода.
Это существенно упрощает реализацию предложенного
21
В конце раздела приводятся алгоритмы идентификации необходимых
версий блоков для транзакций, выполняющихся на основе старого и нового
снимков.
В шестом разделе описывается версионный протокол изоляции
транзакций в XML-СУБД - 4VXDGL. В протоколе описывается изоляция
T r и T w транзакций на основе консистентных снимков БД, а изоляция
T w транзакций на основе протокола XDGL. Особое внимание уделяется
проблеме совмещения версионности на уровне блоков и блокировок на уроне
узлов, которая решается за счет введения дополнительной структуры - графа
зависимостей между транзакциями (DTG).
Кроме того описывается алгоритм сборки устаревших страниц, которые
возникают при устаревании снимков БД.
В конце раздела доказываются теоремы, о корректности и свойствах
протокола 4VXDGL.
Теорема 2 Протокол
4VXDGL
генерирует
сериализуемые
планы
выполнения XML-транзакций
Теорема 3 Максимальное количество версий одного блока, используемых в
протоколе 4VXDGL, ограничено числом 4.
Теорема 4 Процедура продвижения снимков не приводит к приостановке
выполнения T r или T w транзакций
Теорема 5 Параллельное выполнение T r и T w транзакций на основе
протокола 4VXDGL никогда не приводит к конфликту между этими
транзакциями.
Далее в работе описывается метод обеспечения атомарности и
надежности транзакций в случае индивидуальных откатов транзакций или
мягких сбоев в системе. Метод базируется на использовании консистентных
снимков БД в качестве основы для восстановления физически согласованного
22
состояния БД после сбоя.
В свою очередь для обеспечения надежности
транзакций применяется логическая журнализация всех изменений БД.
В
последнем
разделе
этой
главы
представлены
экспериментальной оценки предложенных методов.
результаты
По результатам
проведенных экспериментов делается вывод, что предложенные методы
позволяют существенно улучшить временные характеристики XML-СУБД
(время отклика и пропускную способность) по сравнению с известными
методами.
В конце главы подводятся итоги, где отмечается, что предложенный
метод
управления
транзакциями
удовлетворяет
всем
требованиям,
сформулированным в первом разделе.
В заключении диссертационной работы перечисляются ее основные
результаты.
Основные результаты работы
1. Разработан протокол XDGL изоляции XML-транзакций в XMLориентированных СУБД, который обеспечивает полную сериализацию
XML-транзакций и учитывает семантику XML-модели данных при
определении конфликтов между конкурентными XML-транзакциями.
2. На основе семантического протокола изоляции XML-транзакций
разработан механизм управления конкурентными XML-транзакциями
для реляционных СУБД с поддержкой XML.
3. Разработан версионный протокол 4VXDGL изоляции XML-транзакций
для прирожденных XML-СУБД, в котором учитываются как семантика
XML-модели данных, так и физические особенности организации
структур внешней и оперативной памяти в прирожденных XMLСУБД. Протокол 4VXDGL также учитывает специфику использования
23
прирожденных XML-СУБД, обеспечивая безконфликтное выполнение
читающих и изменяющих транзакций.
4. Произведена
экспериментальная
оценка
предложенных
методов
изоляции XML-транзакций для реляционной СУБД MS SQL Server
2005 и прирожденной XML-СУБД Седна, которая демонстрирует
существенное увеличение производительности системы при наличии
параллельных потоков транзакций на чтение и модификацию XMLдокументов.
5. Разработаны
методы
обеспечения
атомарности
транзакций в прирожденных XML-СУБД.
и
надежности
24
По теме диссертации опубликованы следующие работы
1. P. Pleshachkov, L. Novak. Transaction Isolation In the Sedna Native XML
DBMS. Proc. SYRCoDIS 2004, Saint-Petersburg, Russia.
2. P. Pleshachkov, P. Chardin, S. Kuznetsov. A DataGuide-Based Concurrency
Control Protocol for Cooperation on XML Data. Proc. ADBIS 2005, LNCS
3631 Springer 2005, Tallinn, Estonia.
3. P. Pleshachkov, P. Chardin, S. Kuznetsov. XDGL: XPath-Based Concurrency Control Protocol for XML Data. Proc. BNCOD 2005, LNCS 3567
Springer 2005, Sunderland, UK.
4. P. Pleshachkov, P. Chardin, S. Kuznetsov. A Locking Based Scheduler for
XML Databases. Proc. SEBD 2005, ISBN 8-548-0122-4, Brixen-Bressanone,
Italy.
5. P. Pleshachkov, P. Chardin. A Locking Protocol for Scheduling Transactions
on XML Data. Proc. SYRCoDIS 2005, Saint-Petersburg, Russia.
6. P. Pleshachkov. Transaction Management for XML Stored in Relational
Database Systems. Proc. PhD Forum BNCOD 2006, Belfast, Northern
Ireland, UK.
7. П. О. Плешачков, С. Д. Кузнецов. Управление транзакциями в РСУБД
с поддержкой XML. Программирование. – М.: Наука, 2006. – N 5.
8. Плешачков
П.
О.
SXTM:
высокопроизводительный
менеджер
управления XML-транзакциями. Препринт 11 Института Системного
Программирования РАН, 2006.
Скачать