Реферат: Объектно-ориентированная СУБД (прототип)
4. SAME, копия ROOT – объект, позволяющий создавать копии. Он означает, что для взаимодействующего с ним объекта создается копия.
5. ATOMIC – предок всех атомарных объектов. Задает для них основные методы поведения.
6. INT – целое.
7. STR – строка.
8. DATIME – дата и время
9. BIO – условный объект
10. AGG – агрегат
11. SET – множество
12. SEQ – последовательность
4.2 Строение объекта
Каждому объекту выделяется персональное виртуальное пространство. Объект предваряется заголовком. За заголовком следуют виртуальные пространства данных и журнала. Каждый объект имеет уникальный идентификатор в пределах системы.
Таблица 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 | Доли секунд |
Информация о транзакциях в системе
Все пользовательские объекты в системе имеют транзакционные сообъекты. Транзакционный сообъект – это объект, хранящий информацию о воздействии операций транзакций на состояние пользовательского объекта. Ссылка на сообъект находится внутри объекта, для которого отслеживаются воздействия.
Таблица 8: Структура транзакционного сообъекта (агрегата)
Имя поля | Значение |
DSL | Множество локальных зависимостей |
DSI | Множество унаследованных зависимостей |
DSR | Множество приобретенных зависимостей |
DS | Множество зависимостей |
Множество зависимостей получается объединением множеств локальных, унаследованных и приобретенных зависимостей. Каждый элемент какого-либо из этих множеств зависимостей – пара номеров транзакций (Ti,Tj). Если трактовать это множество как множество ребер графа, в котором вершины – номера транзакций, а ребра – зависимости между транзакциями, то наличие цикла в графе означает некорректное выполнение транзакций.
В целях упрощения решено отказаться от таблицы конфликтов. Таблица конфликтов описывает какие операции конфликтуют между собой, т.е. может ли выполняться операция A, если в данных момент выполняется операция B. Ячейка таблицы может принимать одно из трех значений: «Конфликтует», «Не конфликтует», «Неизвестно». Значение «Неизвестно» вводится по причине наличия механизма позднего связывания, при котором заранее не известно, конфликтуют ли операции.
Транзакции и объекты-поведения
Объекты поведения представляют собой множество объектов, поле OBJKH которых хранит идентификатор выполняемого действия. Это множество имеет ширину элемента не 4, как обычное множество, хранящее данные, а 8. В следующих четырех байтах может храниться идентификатор списка – строки таблицы чередований в точках разрыва (части подсистемы транзакций). Таблица чередований образуется из точек разрыва и группировки спецификаций для объекта. Она позволяет определить: в каких точках разрыва каких операций можно переключиться на выполнение операции, соответствующей этой строке таблицы чередований. Это статическая информация, которая может быть сформирована перед началом работы системы. Элемент строки таблицы чередований состоит из 2 значений: идентификатора операции и идентификатора множества, хранящего номера точек разрыва.
4.3 Контекст транзакции
В системе есть объект DBIO (Database User-Intarface Object), которому известны состояния всех транзакций. Этот объект представляет собой множество, элементами которого являются объекты-агрегаты, описывающие контекст транзакции.
Таблица 9: Контекст транзакции
Имя поля | Размер в байтах | Значение |
TR_MESS | 4 | OID сообщения |
TR_KH | 4 | OID knowhow |
TR_PARAM | 4 | OID агрегата с параметрами |
TR_TARGET | 4 | OID целевого объекта сообщения |
TR_RES | 4 | OID результата |
TR_STACK | 4 | OID стека |
TR_N | 4 | Номер транзакции |
TR_HOSTN | 4 | Номер вызвавшей транзакции |
TR_STATUS | 1 | Состояние транзакции |
TR_POINT | 2 | Точка разрыва, в которой находимся |
Для каждой транзакции выделяется свой стек. Механизм сохранения и восстановления стеков описан в [7]. Стеки сохраняются в атомарных объектах.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14