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

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

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


Спецификация точки проверки


      Идея точки проверки используется  для  минимизации  глубины  отката  в
случае обрыва транзакций. Эти точки могут быть описаны пользователем.  Точки
проверки связаны с операциями на объектах  и  могут  быть  описаны  как  шаг
операции. Нет необходимости иметь спецификацию точки  проверки  для  каждого
объекта в системе.  Однако  пользователь  может  описать  точки  проверки  в
некоторых  операциях  на  некоторых  объектах,   так,   что   каждая   точка
представляет  логическую  единицу  работы.  Идея  установки  точек  проверки
предоставляет  базе  данных  возможность  определять,  находится  ли  она  в
согласованном   состоянии.   Точка   проверки    служит    как    механизмом
синхронизации,   так   и   заботой   о   связности   базы   данных.    Любая
пользовательская транзакция может иметь зависимость  от  результатов  других
транзакций. Таким  образом,  точка  проверки  в  транзакции  имеет  значение
только  если  все  другие  активные  операции  также  согласны  с  тем,  что
состояние базы данных в  этой  точке  является  непротиворечивым  состоянием
(consistent state). При этом точка проверки действует как точка  встречи,  в
которой все активные транзакции системы фиксируют (commit)  свою,  возможно,
частично сделанную, до этой точки работу.
      Приложение   базы   данных   предполагает   значительную   известность
относительно семантики операций в базе данных. Семантика знаний  может  быть
использована для установки точек проверки в транзакциях  в  точках,  которые
соответствуют логическому завершению некоторой части работы. В  традиционных
базах данных с быстро выполняющимися транзакциями сама  транзакция  является
логической единицей работы. Однако в крупных приложениях  нельзя  трактовать
транзакцию  целиком  как  логическую  единицу  работы.  В  этом  и   состоит
полезность идеи точек проверки.


Состояние пользовательских транзакций на объектах


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

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

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

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

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

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

      [pic]


Рис 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].


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



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


      Системе известны следующие базовые объекты: 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 – последовательность



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


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

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

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


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


      Атомарный объект хранит внутри блока данных свое значение.
      Объект-условие  хранит  внутри  блока  данных  три  идентификатора   в
следующем  порядке:  идентификатор  метода  условия,  идентификатор  метода,
выполняемого, если  условие выполнено  («истина»)  и  идентификатор  метода,
выполняемого, если условие не выполнено ( «ложь»).
      У объектов агрегат, список и множество первое  слово  блока  данных  –
размер элемента. Для списка и множества он равен 4. Для агрегата – 12.
      Элементом списка и множества является идентификатор объекта. Элементом
агрегата является кортеж:
 . идентификатор объекта-значения (он обязательно является потомком объекта-
   образца)
 . идентификатор поля (FID)
 . идентификатор объекта-образца
      Если идентификатор объекта-экземпляра в  списке  или  множестве  равен
нулю, это означает, что элемент удален. Признаком конца  списка,  множества,
полей объекта служит размер виртуальной памяти,  выделенной  для  размещения
данных.

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

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

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

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

|Число   |Значение                   |
|байт    |   
Пред.678910След.
скачать работу

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

 

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

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


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