Классика баз данных - статьи

       

Общая архитектура SXTM


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

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

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

Во втором способе используется двухуровневая модель транзакций []. В этой модели набор запросов пользователя, для которых требуется наличие свойств атомарности и изолированности, формирует глобальную транзакцию (такие транзакции мы будем называть XML-транзакциями). Дополнительный менеджер транзакций, построенный над РСУБД, декомпозирует исходную глобальную транзакцию на набор субтранзакций к РСУБД, или DB-транзакций.

При использовании второго способа мы получаем очень важное преимущество. На втором уровне менеджер XML-транзакций при принятии решения о конфликте между транзакциями может учитывать семантику XML-операций и устанавливать "семантические" блокировки до конца транзакции. В свою очередь, DB-транзакция завершается и освобождает "грубые" блокировки гораздо раньше завершения глобальной транзакции. Этот подход иллюстрирует (слева). За счет этого можно увеличить параллелизм конкурентных транзакций.

Для сравнения двух вышеописанных подходов в контексте их применения для XML-транзакций мы разработали и реализовали SXTM - дополнительный семантический менеджер управления XML-транзакциями. В SXTM глобальными транзакциями являются XML-транзакции, которые состоят из наборов XML-запросов. SXTM перехватывает все запросы клиента и обращает их в субтранзакции к РСУБД. DB-транзакции могут запускаться на пониженных уровнях изоляции за счет того, что SXTM гарантирует сериализацию XML-транзакций. Эта оптимизация, в совокупности с быстрым освобождением блокировок в РСУБД, приводит к существенному повышению параллелизма XML-операций.



Содержание раздела