Все пользовательские объекты в системе имеют транзакционные сообъекты. Транзакционный сообъект – это объект, хранящий информацию о воздействии операций транзакций на состояние пользовательского объекта. Ссылка на сообъект находится внутри объекта, для которого отслеживаются воздействия.
Таблица 8: Структура транзакционного сообъекта
(агрегата)
Имя поля |
Значение |
DSL |
Множество локальных зависимостей |
DSI |
Множество унаследованных зависимостей |
DSR |
Множество приобретенных зависимостей |
DS |
Множество зависимостей |
Множество зависимостей получается объединением множеств локальных, унаследованных и приобретенных зависимостей. Каждый элемент какого-либо из этих множеств зависимостей – пара номеров транзакций (Ti,Tj). Если трактовать это множество как множество ребер графа, в котором вершины – номера транзакций, а ребра – зависимости между транзакциями, то наличие цикла в графе означает некорректное выполнение транзакций.
В целях упрощения решено отказаться от таблицы конфликтов. Таблица конфликтов описывает какие операции конфликтуют между собой, т.е. может ли выполняться операция A, если в данных момент выполняется операция B. Ячейка таблицы может принимать одно из трех значений: «Конфликтует», «Не конфликтует», «Неизвестно». Значение «Неизвестно» вводится по причине наличия механизма позднего связывания, при котором заранее не известно, конфликтуют ли операции.