Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Моделирование темпоральных (временных) данных в хранилищах данных
Формирование запросов к темпоральным данным
Разработка запросов с использованием временных меток требует от проектировщика особой внимательности и аккуратности. Рассмотрим формирование типовых предикатов с применением временных меток, а именно предикатов сравнения периодов времени. Пусть Р1 есть временной интервал "P1Start, Р1End", а P2 — временной интервал "P2Start, Р2End". Также введем условное обозначение VALID(T) для обозначения периода времени в кортеже таблицы. Заметим, что период времени не является скалярной величиной — это и создает определенные трудности в формировании предикатов сравнения периодов времени. Если сравниваются моментальные временные метки, то используется стандартный набор операторов сравнения скалярных величин SQL для типа данных DATA или TIMESTAMP.
Если P1Start < P2Start, то имеем предикат сравнения периодов времени "Меньше чем": P1 < P2 ( рис. 7.3). Если P1End > P2End, то имеем предикат сравнения периодов времени "Больше чем": P1 > P2. Если P1Start = P2Start AND P1End = P2End, то периоды времени считаются эквивалентными. Этот тип предикатов применяется для упорядочивания периодов времени.
Рассмотрим предикат сравнения периодов времени "Предшествует" (условное обозначение для примеров — PRECEDES ), когда один период времени предшествует другому ( рис. 7.4), выполняется условие P1End < P2Start. Этот тип предикатов используется для разделения периодов времени.
Для нахождения периодов времени, в которых происходит изменение значений факта, применяется предикат сравнения периодов времени "Встречаются" (условное обозначение для примеров — MEETS ). Если период времени P2, грубо говоря, цепляется своим началом за конец периода P1, то выполняется логическое условие (P1End = P2Start – 1) OR (P2End = P1Start – 1) (см. рис. 7.5). Примером использования такого предиката являются запросы типа "цена на товар растет или падает", "зарплата увеличена" и т.д.
Оператор SQL для выборки списка изменения цен на товар из таблицы Table1 может иметь вид:
SELECT B.No, B.Price. A.Price FROM Table1 A, Table1 B WHERE A.No=B.No AND A.Price < B.Price AND VALID(A) PRECEDES VALID(B) AND VALID(A) MEETS VALID(B)
Комбинация временных предикатов означает, что сначала мы упорядочиваем периоды времени, а затем цепляем их друг за друга. Таким образом, получается непрерывная временная шкала периодов.
Для нахождения пересечений периодов времени используется предикат сравнения периодов времени "Перекрывает" (условное обозначение для примеров — OVERLAPS ). Если период времени P1 пересекается с периодом времени P2, то выполняется логическое условие (P1Start <= P2End) OR (P2Start <= P1End). Примером использования такого предиката является запрос типа "Найти всех сотрудников, которые работали в организации в период с 1 января 2008 года по 20 февраля 2009 года", например (табл. 7.7):
SELECT Name FROM Empl WHERE VALID(Empl) OVERLAPS [01.01.2008, 20.02.2009]
Для нахождения событий, которые происходили в течение определенного периода времени, используется предикат сравнения периодов времени "Содержится" (условное обозначение для примеров — CONTAINS ). Если период времени P1 содержится в периоде времени P2, то выполняется логическое условие (P1Start <= P2Start) OR (P1End <= P2End) (см. рис. 7.6).
Различают несколько типов запросов к временным данным для таблиц состояния.
- Запросы моментального снимка (Snapshot query) – это запросы для построения выборки строк таблицы, действительных на определенный момент времени (дату).
- Неупорядоченные темпоральные запросы (Nonsequenced temporal query) – это запросы для построения выборки строк таблицы без учета временных меток, т.е. в полученной выборке строки по времени никак не соотносятся. В результате получается таблица моментального снимка.
- Упорядоченные темпоральные запросы (Sequenced temporal query) — это запросы для построения выборки строк таблицы на определенный период времени с использованием предикатов сравнения периодов времени, которые были рассмотрены выше. В результате получается таблица состояния, в которой временная метка для каждого кортежа удовлетворяет определенным временным ограничениям.
Приведем пример упорядоченного темпорального запроса. Рассмотрим таблицы БД Сотрудник (Empl) и Отдел (Department), содержание которых приведено в табл. 7.9 и 6.10. Построим выборку ответа на вопрос "Кто руководил отделом Прохорова А.И.?" Результат приведен в табл. 7.11.
SELECT Manager FROM Empl, Department WHERE Department.Dept = Empl.Dept AND Empl.Name ='Прохоров А.И.' AND VALID(Empl) OVERLAPS VALID(Department)
Сотрудник (Name) | Отдел (Dept) | Зарплата (Sal) | Время назначения (SDate) | Время отмены (EDate) |
---|---|---|---|---|
Прохоров А.И. | ОВИР | 15000 | 01.01.2008 | 30.05.2008 |
Прохоров А.И. | КИК | 23000 | 01.06.2008 | FOREVER |
Соловьева М.Е. | ОВИР | 15000 | 01.06.2008 | FOREVER |
Амосова Е.С. | ОВИР | 10000 | 01.01.2008 | 30.05.2008 |
Амосова Е.С. | ОВИР | 12000 | 01.06.2008 | FOREVER |
Руководитель (Manager) | Отдел (Dept) | Время назначения (SDate) | Время отмены (EDate) |
---|---|---|---|
Прохоров А.И. | КИК | 01.06.2008 | FOREVER |
Соловьева М.Е. | ОВИР | 01.06.2008 | FOREVER |
Амосова Е.С. | ОВИР | 01.01.2008 | 30.05.2008 |
Руководитель (Manager) | Время назначения (SDate) | Время отмены (EDate) |
---|---|---|
Прохоров А.И. | 01.06.2008 | FOREVER |
Амосова Е.С. | 01.01.2008 | 30.05.2008 |
Теперь давайте рассмотрим основные приемы моделирования темпоральных данных.
Основные приемы моделирования темпоральных данных
Учет временных зависимостей предметной области
Рассмотрим приемы использования темпорального моделирования данных на практике. Рассмотрим пример БД о видеофильмах ("Фильм"), записанных на определенных студиях ("Студия") под управлением конкретных менеджеров ("Директор") с участием определенных актеров ("Актер"). Фрагмент логической структуры (ER-модели), связывающей указанные выше сущности, приведен на рис. 7.7. Данная ER-модель является статической — она не учитывает никаких исторических аспектов существования студии или время работы определенного менеджера над определенной картиной.
Предположим, что перед проектировщиком ХД поставлена задача — построить историческую модель для приведенной ER-модели с помощью методов темпорального моделирования данных. Проектировщик должен рассмотреть временные зависимости сущностей предметной области и внести их в статическую ER-модель. Временной зависимостью будем называть функциональную зависимость значений атрибутов сущностей предметной области от времени.
Для учета временных зависимостей проектировщику необходимо добавить в приведенную статическую структуру временные метки. При этом ему следует решить следующие задачи:
- исходя из поставленной задачи, принять решение о том, поведение каких сущностей во времени будет учитываться в модели, а каких нет;
- определить, имеются ли сущности, которые могут содержать семантически содержательные для предметной области временные метки, и соответствующим образом их интерпретировать;
- добавить временные метки в сущности ER-модели. При этом следует принять решение о том, как будет моделироваться сущность – используя события или состояния. События используются для учета операций, которые изменяют данные в некоторые моменты времени. Состояния используются для представления состояния атрибутов сущности в течение заданного периода времени. В первом случае используются моментные временные метки, а во втором случае используются интервальные временные метки ;
- определить домены временных меток на имеющемся в СУБД типе "дата/время" и строго придерживаться этих определений доменов в дальнейшем.
При решении этих задач взаимоотношения между сущностями временно не принимаются во внимание.
Предположим, что в нашем примере заказчику не интересна история взаимоотношения актеров и менеджеров (директоров) фильмов, а также история участия актеров в различных фильмах. Тогда для сущности, описывающей актеров, временное моделирование данных не будет выполняться.
Далее, пусть заказчику интересна история состояния студии или периоды занятости менеджеров фильмов. Тогда естественно моделировать временное поведение сущностей, описывающих студии и менеджеров, с помощью фиксации состояния их атрибутов.
Предположим, что заказчика интересует история существования фильма в прокате. Тогда было бы разумно выполнить временное моделирование сущности, описывающей фильм, с помощью фиксации событий, связанных с фильмом.
Например, одним из бизнес-приложений, необходимым для заказчика, будет "Прокат видеофильмов". Клиенты оплачивают пользование видеокассетой в течение определенного времени и дней. Приложение ведет учет предоставления клиентам таких услуг.
Результат темпорального моделирования на ER-модели показан на рис. 7.8 ниже.
Таким образом, основным приемом логического моделирования темпоральных данных предметной области является добавление временных меток в сущности предметной области. Добавление временных меток в сущности логической модели позволяет зафиксировать в модели поведение некоторых атрибутов сущности во времени. Такие атрибуты сущности образуют временные зависимости атрибутов.
Классы временных зависимостей атрибутов (нормализация модели)
После добавления временных меток в сущности логической модели одной из главных задач проектировщика становится определение атрибутов сущности, которые участвуют во временной зависимости. Одним из приемов решения такой задачи в рамках реляционной модели данных является нормализация временных зависимостей, или построение классов временных зависимостей (Volatility Classes).
Классом временной зависимости называется группа атрибутов сущности, которые совместно изменяют свои значения с течением времени. Ответ на вопрос о том, сколько атрибутов должно попадать в класс, не является однозначным. Классы с небольшим кардинальным числом атрибутов невыгодны с практической точки зрения, а объединение в класс значительного числа независимо меняющихся во времени атрибутов приводит к увеличению избыточности хранения. Хорошим практическим критерием будет являться сложность сопровождения этих классов в ХД.
На практике проектировщики темпоральных моделей данных используют следующие два основных класса:
- класс независимых от времени атрибутов (Time-invariant Volatility Class);
- класс зависимых от времени атрибутов (Time-variant Volatility Class).
Класс независимых от времени атрибутов образуют либо те атрибуты, которые не зависят от времени, либо те, для которых принято решение не хранить историю их временного поведения. Этот класс всегда не пуст, поскольку предполагается, что ключ сущности составляют атрибуты, которые не зависят от временных отношений сущности в предметной области.
Атрибуты этого класса помещаются в новую сущность, которая представляет собой часть первоначальной сущности. Эта новая сущность будет являться как бы корнем в иерархии временных отношений со всеми зависимыми от времени сущностями, полученными из первоначальной сущности. С этой точки зрения история поведения сущности во времени может быть промоделирована с помощью зависимых сущностей.
Например, для сущности "Директор фильма" атрибуты Табельный номер, его Фамилия, Адрес и Телефон являются кандидатами для помещения в класс независимых от времени атрибутов. Понятно, что в этом случае предполагается, что директор не будет менять свою фамилию, и нас не интересует история его места жительства.
Для сущности "Фильм" такой класс может состоять из атрибутов Инвентарный номер фильма, Название фильма и Год выпуска фильма.
Класс зависимых от времени атрибутов образуют те атрибуты сущности, которые меняются синхронно во времени. Таких классов у сущности может быть несколько. Каждый такой класс должен быть вынесен в отдельную сущность.
Например, для сущности "Директор фильма" класс зависимых от времени атрибутов будут составлять интервальная временная метка и Зарплата директора. Такой класс будет единственным у первоначальной сущности. При этом будет моделироваться, как уже решил проектировщик, история состояния атрибута Зарплата. Ниже, на рис. 7.9, показана историческая модель для сущности "Директор фильма".
Для сущности "Фильм" могут быть идентифицированы два класса зависимых от времени атрибутов, поскольку значения атрибутов Бюджет фильма и Сборы за прокат имеют независимое друг от друга поведение во времени. Более того, поскольку значение атрибута Бюджет изменяется не слишком часто, для временного моделирования его поведения целесообразно использовать модель состояния и интервальную временную метку. Значение атрибута Сборы за прокат будет меняться при каждой записи данных в ХД, и следовательно, нужно отображать это событие с помощью моментной временной метки. Полученная логическая модель исторического поведения сущности "Фильм" приведена на рис. 7.10 ниже.
Проведя исследования исходной логической модели на предмет учета поведения сущностей во времени, проектировщик ХД должен ответить на вопрос, учтены ли все темпоральные данные, которые требуется хранить в ХД (если нет, то построить соответствующие сущности логической модели).
Решение этой задачи обычно связано с поиском сущностей для представления событий и операций хозяйственной деятельности, которые являются важными для решения задач анализа данных в ХД, но не поддерживаются в рамках исходной ER-модели данных подающих OLTP-систем. Эта задача является достаточно сложной и требует всестороннего изучения предметной области с точки зрения анализа данных.
Так, в нашем примере мы не рассматривали ряд вопросов, связанных с участием актеров в фильмах. Конечных пользователей может заинтересовать ряд вопросов, которые связаны с сущностью "Актер":
- С какими актерами чаще всего работает данный директор?
- Каких актеров данный директор не использует более одного раза?
- Как изменяется гонорар актеров по мере роста их популярности?
- На какие роли чаще приглашается данный актер?
Если на первые два вопроса пользователь может получить ответы на существующей структуре данных ER-модели (см. рис. 7.7), то для ответов на два других логическая модель должна быть дополнена информацией о гонорарах актера в фильмах и показателем, который измеряет популярность актера. Потребуются ли для представления такой информации дополнительные атрибуты или сущности, решает проектировщик ХД.
Таким образом, нормализация темпоральной логической модели основывается на выделении классов зависимых от времени атрибутов и вынесении их в отдельные сущности предметной области.
Теперь мы готовы приступить к построению логической темпоральной модели предметной области ХД о видеофильмах.
Построение логической темпоральной модели данных
После того, как проектировщик построит темпоральные модели сущностей исходной ER-модели, ему предстоит собрать все темпоральные модели сущностей в одной логической модели данных и зафиксировать все необходимые взаимосвязи.
Для каждой взаимосвязи исходной логической модели проектировщик ХД должен исследовать вопрос: нужно ли хранить историю взаимосвязи в ХД? Если историю изменений взаимосвязи не нужно сохранять в ХД, то взаимосвязь просто переносится в построенную временную модель сущностей как взаимосвязь между сущностями, представляющими классы независимых от времени атрибутов.
Если историю изменений взаимосвязи нужно сохранять в ХД, то такую взаимосвязь нужно дополнить атрибутами временных меток, представив ее в виде сущности. В реляционной модели данных взаимосвязь между сущностями моделируется с помощью отношений и, следовательно, должна быть представлена с помощью сущностей.
Для рассматриваемого нами примера темпоральная модель данных может быть такой, как на рис. 7.11. Как видно из рисунка, четыре исходные взаимосвязи (владеет, нанимает, работает и имеет) перенесены во временную модель данных из ER-модели без изменений, поскольку информацию об их временном поведении было решено не сохранять.
В сущности "Студия" решено хранить историю смены ее руководителей, поэтому в модель была добавлена сущность "Руководитель студии". Темпоральные модели сущностей "Фильм" и "Директор" были построены ранее, и для них зафиксированы взаимосвязи с другими сущностями модели. А вот взаимосвязь "руководит" исходной ER-модели представлена в виде сущности "Распоряжается" (фильмом), поскольку решено сохранять историю работы менеджеров над фильмами.
Проектировщик ХД может далее исследовать полученную модель, для того чтобы уменьшить ее сложность, например, сократив число сущностей в модели. В нашем случае нетрудно заметить, что период времени, когда менеджер работает над фильмом, совпадает с периодом времени, когда на фильм выделены деньги. Следовательно, сущности "Распоряжается" и "Бюджет" могут быть объединены в одну сущность "Бюджет", как показано на рис. 7.12. Такой прием называется группировкой классов атрибутов, зависимых от времени. Заметим, что использование такого приема приводит к увеличению избыточности данных в модели.
увеличить изображение
Рис. 7.12. Преобразование полученной темпоральной модели данных БД о видеофильмах
Таким образом, некоторые временные ограничения, такие, которые содержат временной аспект, представляются в модели в виде сущностей-взаимосвязей. Однако существуют временные ограничения, которые выражаются в виде бизнес-правил. Такие ограничения трудно моделировать в рамках расширенной ER-модели, которая отображается в реляционную модель при помощи стандартных правил проектирования. Например, может существовать бизнес-правило: два менеджера не могут одновременно работать над одним фильмом. Обычно такие бизнес-правила формулируются при помощи описательного текста и используются разработчиками приложений, т.е. моделируются кодом приложения БД.
Следует отметить также, что временные ограничения следует заносить в словарь метаданных, поскольку они являются важной информацией для конечного пользователя.
Таким образом, логическая темпоральная модель предметной области ХД о видеофильмах построена.
Резюме
Рассмотренный в настоящей лекции подход к моделированию темпоральных данных является расширением модели "сущность-связь" за счет учета временных зависимостей определенных атрибутов сущностей предметной области.
При таком подходе проектировщик выполняет следующую последовательность действий.
- Разрабатывает модель "сущность-связь" для выделенной предметной области (ER-диаграммы, как правило, в третьей нормальной форме) без учета временных зависимостей атрибутов модели.
- Исходя из бизнес-требований определяет атрибуты модели, которые зависят от времени и будут учитываться в разрабатываемой модели (т.е. принимает решение о выделении совокупности темпоральных данных модели).
- Выполняет учет временных зависимостей атрибутов посредством введения в сущности временных меток.
- Нормализует полученные темпоральные сущности посредством выделения классов зависимых от времени атрибутов и вынесения их в отдельные сущности.
- Принимает решение о представлении взаимосвязей предметной области (в том числе и зависящих от времени) в виде сущностей предметной области.
- Собирает полученные сущности в единую ER-модель. Эта модель, как правило, нормализована.
- Принимает решение о денормализации модели, исходя из требований производительности запросов или из обоснованных соображений по упрощению модели (например, наглядность).
В результате применения темпорального моделирования проектировщик создает логическую модель предметной области с учетом временных зависимостей данных, независимую от программно-аппаратной реализации. Этот метод используется как при моделировании предметных областей OLTP-систем, так и при моделировании предметных областей BI-систем.
Знание техники построения логических темпоральных моделей данных особенно важно при проектировании ХД, поскольку одной из целей создания последних является исследование временных зависимостей данных организации.