Состояние пользовательских транзакций на объектах
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Каждый объект O в системе хранит состояние каждой пользовательской транзакции в системе. Состояние пользовательской транзакции (т.е. операции на DBIO) может принимать одно из следующих значений:

Никогда не активировалась (Never Activated)
Любая пользовательская транзакция, которая не воздействовала на O прямо или косвенно, находится в этом состоянии на O. Это эквивалентно тому, что не имеется никакой информации о пользовательской транзакции в O.

Завершена (Completed)
Пользовательская транзакция находится в состоянии Завершена на O, если операция вызванная ей на O закончила выполнение всех своих шагов.

Находится в точке проверки (Chekpoint)
Пользовательская транзакция не произвела никаких действий с тех пор, как оказалась в точке проверки.

Задержана для проверки (BlockedForCheckPoint)
Пользовательская транзакция ожидает выполнения условий, которые будут удовлетворять переводу ее в Точку проверки.

Выполняется (Executing)
Пользовательская транзакция выполняется на O, если операция op(O), вызванная этой транзакцией выполняется.

 

 

 

Рис 4: Диаграмма переходов транзакции из состояния в состояние

 

 

Таблица 4: Пример изменения состояния транзакции при ее выполнении

 

Действия Новое состояние транзакции
  Никогда не активировалась
Объект O получил запрос на выполнение op(O) впервые для транзакции Tr(op(O)) и op(O) начинает выполняться Выполняется
Операция транзакции достигла описанной для нее точки проверки, все остальные активные операции на O "никогда не активировались" в точке проверки Находится в точке проверки
Операция транзакции достигла описанной для нее точки проверки, но активные операции не находятся в своих точках проверки Блокирована для точки провер­ки
Tr(op(O)) закончила все свои шаги Завершена

 

 

Таким образом, если объект имеет точки проверки, описанные для своих операций, то операции встречаются (рандеву) в точке проверки. Если операции в точке проверки произведены успешно, то в будущем нет необходимости любой операции откатываться (rollback) за точку проверки.

 

 






Шаги протокола согласованного управления

 

1. Операция запрошена (requested)

2. Операция вызывает другую операцию

3. Вызванная операция возвращается

4. Операция завершена

5. Точка разрыва (breakpoint) достигнута

6. Точка проверки (checkpoint) достигнута

7. В точке проверки получено сообщение

 

Детально алгоритм выполнения шагов описан в [19].

 

Представление данных в ООБД

 

Базовые объекты системы

 

Системе известны следующие базовые объекты: ROOT, FAIL, NULL, SAME, ATOMIC, INT, STR, DATIME, BIO, AGG, SET, SEQ.

 

1. ROOT – корень – предок всех объектов. Данных не имеет.

2. FAIL, копия ROOT – возвращается, если при воздействии произошла ошибка.

3. NULL, копия ROOT – объект-заменитель при отсутствующем значении. Эта проблема возникла недавно, но в теории реляционных баз данных пока не нашла приемлемого решения. Суть проблемы заключается в том, что при вводе данных, некоторые из них могут отсутствовать (например, не известен год рождения), поэтому нельзя сказать, чему они в точности равны. В некоторых случаях нуль может являться значением, для этого и вводится специальное обозначение (NULL).

4. SAME, копия ROOT – объект, позволяющий создавать копии. Он означает, что для взаимодействующего с ним объекта создается копия.

5. ATOMIC – предок всех атомарных объектов. Задает для них основные методы поведения.

6. INT – целое.

7. STR – строка.

8. DATIME – дата и время

9. BIO – условный объект

10. AGG – агрегат

11. SET – множество

12. SEQ – последовательность

 

 

 

Строение объекта

 

Каждому объекту выделяется персональное виртуальное пространство. Объект предваряется заголовком. За заголовком следуют виртуальные пространства данных и журнала. Каждый объект имеет уникальный идентификатор в пределах системы.

 

Таблица 5: Заголовок объекта (все поля 32-битные)

 

Поле Семантика
OID Идентификатор объекта (уникальный в пределах системы)
OBJBHR Идентификатор объекта-поведения (методы)
OBJKH Идентификатор объекта-действия
TRCOOBJ Идентификатор транзакционного сообъекта
VALUE Адрес заголовка вложенного канала, хранящего значение
HISTORY Адрес заголовка вложенного канала, хранящего историю изменений

Блок данных объекта

 

Атомарный объект хранит внутри блока данных свое значение.

Объект-условие хранит внутри блока данных три идентификатора в следующем порядке: идентификатор метода условия, идентификатор метода, выполняемого, если условие выполнено («истина») и идентификатор метода, выполняемого, если условие не выполнено ( «ложь»).

У объектов агрегат, список и множество первое слово блока данных – размер элемента. Для списка и множества он равен 4. Для агрегата – 12.

Элементом списка и множества является идентификатор объекта. Элементом агрегата является кортеж:

· идентификатор объекта-значения (он обязательно является потомком объекта-образца)

· идентификатор поля (FID)

· идентификатор объекта-образца

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

 

Таблица 6: Строение данных для DATIME

 

Длина в байтах Значение
2 Год
1 Месяц
1 День
1 Час
1 Минуты
1 Секунды
2 Доли секунд

 

Такая структура журнала позво­ляет фиксировать изменения не только данных, но и поведений, knowhow…

 

Таблица 7: Структура записи изменений во внутреннем журнале объекта

 

Число байт Значение
4 Номер транзакции
2 Адрес размещения в заголовке
4 Замененное значение
2 Год
1 Месяц
1 День
1 Час
1 Минуты
1 Секунды
2 Доли секунд

Дата: 2019-05-28, просмотров: 256.