Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Объектно-ориентированная СУБД (прототип)

                        |
|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]. Стеки сохраняются в атомарных объектах.



                   5. Описание операций над объектами в БД


             [] DB.NEW   [] -- создать новую БД
             [] DB.OPEN  [] -- открыть БД
             [] DB.CLOSE [] -- закрыть БД

Операции клонирования:

          [oid] CLONE      [oid']  -- клонировать объект
             [] CLONE_ROOT [oid']  -- Создать объект от "Корень"
          [int] CLONE_INT  [oid']  -- Создать объект "Целое"
     ["string"] CLONE_STR  [oid']  -- Создать объект "Строка"
     ["string"] CLONE_AGG  [oid']  -- Создать объек-агрегат
     [oid_if oid_then oid_else]
                CLONE_BIO  [oid']  -- Создать объект-условие
             [] CLONE_SET  [oid']  -- Создать объект-множество
             [] CLONE_SEQ  [oid']  -- Создать объект-последовательность

OIDROOT, OIDINT, OIDAGG, …, OIDSEQ -– Узнать идентификаторы соотв. Объектов

      [oid_bhr] SET_BHR    []      -- переопределить поведение
             [] GET_BHR    [oid]   -- узнать поведение
       [oid_kh] SET_KH     []      -- переопределить действие
             [] GET_KH     [oid]   -- узнать действие
          [oid] GET_INT    [int]   -- Получить целое число из объекта-
целого
      [int oid] SET_INT    []      -- Занести целое число в объект-целое
          [oid] PRINT_STR  []      -- Печатать на экране содержимое строки
 ["string" oid] SET_STR    []      -- Занести строку в объект-строку

[oid_super oid] SUPER+     []      -- наследовать данные из oid_super в oid
          [oid] DELOBJ     []      -- удалить объект

Операции над множеством:

   [oid_el oid] SET+E      []      -- добавить элемент в множество
   [oid_el oid] SET-E      []      -- удалить элемент из множества
   [oid_el oid] SET?E      [0/1]   -- найти элемент в множестве
     [oid1 oid] SET+       []      -- объединение
     [oid1 oid] SET-       []      -- разность
     [oid1 oid] SET*       []      -- пересечение

Операции над списком:

 [oid_el n oid] SEQ+E      []      -- добавить элемент в последовательность
        [n oid] SEQ-E      []      -- удалить n-й элемент из
                                     последовательности
   [oid_el oid] SEQ?E      [0/n]   -- найти позицию в последовательности
        [n oid] SEQ?N      [0/oid] -- определить oid n-го элемента послед-
ти

Операции над агрегатом:

[fid oid_etalon oid] AGG+F []      -- добавить поле к объекту
          [fid oid] AGG-F  []      -- удалить поле из объекта
          [fid oid] ETALON [oid]   -- получить идентификатор объекта-
эталона
          [fid oid] FIELD  [oid]   -- получить идентификатор
                                      объекта-значения


Операции над объектом-условием:

           [oid] GET_BIO
     [oid_else oid_then oid_if]    -- Получить параметры объекта-условия
[oid_else oid_then oid_if oid]
                 SET_BIO []        -- Сохранить параметры объекта-условия



Специальные операции:

[oid_str oid] SET_NAMEOBJ [oid] -- именовать объект
[oid_str fid] SET_NAMEFID [fid] -- именовать поле
    [oid_str] NAMEOBJ     [oid] -- получить идентификатор по имени
    [oid_str] NAMEFID     [fid] -- получить идентификатор поля по имени
[oid_mess oid_par oid] SEND  [] -- послать сообщение объекту
 [oid_mess oid_obj] METHOD?  [] -- определить идентификатор метода
   [oid1 oid] CHIELD      [1/0] -- определить, является ли oid1 потомком
oid
     [oid_kh] RUN_KH         [] -- выполнить knowhow
           [] NCHAN      [chan] -- узнать номер текущего канала
       [chan] !NCHAN         [] -- переключиться на заданный канал

Операции просмотра:

[oid] JVIEW  [] -- просмотр журнала
   [] A.VIEW [] -- просмотр адресов объектов в БД
   [] Q.VIEW [] -- просмотр очереди
   [] IC     [] -- просмотр состояния канала



             6. Требования к техническим и программным средствам



      ДССП реализована на множестве компьютерных платформ (VAX, PDP-11,  IBM
PC, R3000, MC68020, SPARC) и операционных систем  (MSDOS,  MSDOS-экстендеры,
UNIX, RT-11, RSX, OS9, CPM и др.). В  данный  момент  практически  закончена
разработка ДССП на Си,  что  обеспечивает  перенос  этой  системы  на  любую
платформу, где есть Си.

Аппаратные средства:
Любая платформа,  на  которой  функционирует  ДССП,  с  объемом  оперативной
памяти для нужд БД не менее 1 Мб.

Программные средства:
ДССП с диспетчером  параллельных  процессов  (версия  4.42)  и  Операционная
Система.

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

      В дальнейшем, могут быть реализованы сетевые протоколы и тогда  СУООБД
будет являться сервером в клиент-серверных приложениях.

      Использование отдельных почтовых  ящиков  для  нескольких  параллельно
работающих пользователей позволяет  возложить  на  СУООБД  функции  монитора
[6],  осуществляющего  линеаризацию   поступающих  запросов  к   содержимому
СУООБД.


                           7. Реализация прототипа



                               7.1 Построитель

LOAD TIMEM
LOAD M0
LOAD M2
LOAD Soms
LOAD CHMS
LOAD SYSOBJS
LOAD M3
LOAD LS_CASH
UNDEF

PROGRAM $KH_VOC


                     7.2 Заголовочный модуль для каналов


PROGRAM $M0
B16
1000 VALUE TOTMEMLEN
TOTMEMLEN BYTE VCTR MEMORY
: T-1 D -1 ;
: *4 SHL SHL
Пред.678910След.
скачать работу

Объектно-ориентированная СУБД (прототип)

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ