КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Системы с устаревшими даннымиВ предыдущем разделе мы рассматривали системы, в которых только транзакции имеют временные ограничения. Однако в системах реального времени зачастую и сами данные могут иметь временную природу [79]. Например, для работы системы автопилота необходимо использовать информацию о силе и направлении ветра, а эта информация меняется непрерывно и очень быстро устаревает. Необходимость работы с устаревающими данными порождает новые проблемы. В СУБД реального времени объекты данных делятся на два типа: дискретные и непрерывные. Дискретные данные − это «обычные» данные в смысле классических СУБД, т.е. данные, которые не связаны с реальным временем. Непрерывные данные − это данные, связанные с внешними объектами, состояние которых непрерывно меняется во времени. Естественно, что состояние непрерывного объекта данных отображается в СУБД как дискретно обновляемая величина. Эта величина отражает состояние объекта на определенный момент времени в прошлом и с течением времени может все более отличаться от текущего состояния объекта. Например, если для расчета траектории самолета использовать данные о ветре часовой давности, то полученные результаты не будут соответствовать действительности. Формально непрерывный объект данных можно описать при помощи следующей тройки (dvalue, dtimestamp, davi), где dvalue − состояние объекта d на момент времени dtimestamp и davi − это длина интервала, в течение которого это состояние можно считать корректным. Этот интервал называется интервалом абсолютной корректности элемента данных. Непрерывными являются не только те элементы данных, которые непосредственно связаны с внешними объектами, но также и те элементы данных, значение которых зависит от других непрерывных объектов. Такие объекты называются соответственно базовыми и выведенными. Все изменения состояния базы данных выполняются от имени транзакций. Это касается и изменений состояний непрерывных элементов данных. По типу изменяемых данных транзакции подразделяются на следующие классы: Сенсорные − это транзакции, которые модифицируют базовые объекты. Такие транзакции обычно выполняются периодически и не работают с дискретными элементами данных. Порожденные − это транзакции, которые модифицируют состояние выведенных объектов. Такие транзакции порождаются в результате изменений тех непрерывных объектов, из которых выводится модифицируемый объект. Пользовательские − это все остальные транзакции. Они не могут изменять никакие непрерывные объекты, но могут их читать. Сенсорные и порожденные транзакции обычно имеют крепкие директивные сроки. Это естественное решение − с одной стороны, бессмысленно завершать работу по обновлению состояния объекта, зная, что оно уже не корректно, с другой − если обновить состояние не удалось вовремя, то само по себе это не фатально.
|