Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Моделирование темпоральных (временных) данных в хранилищах данных
Введение в моделирование темпоральных данных
Далее в настоящих лекциях для представления объектов модели предметной области на ER-диаграммах будет использована нотация методологии информационного проектирования (IE). В этой нотации сущность на ER-диаграмме представляется прямоугольником с именем в верхней части. В прямоугольнике перечисляются атрибуты сущности; при этом атрибуты, составляющие уникальный идентификатор сущности, подчеркиваются. Для атрибутов может быть задан домен.
Отношение (связь) сущностей на ER-диаграмме изображается линией, соединяющей эти сущности. Степень связи изображается с помощью символа "птичья лапка", указывающего на то, что в связи участвует много (N) экземпляров сущности, и одинарной горизонтальной чертой, указывающей на то, что в связи участвует один экземпляр сущности. Необязательный класс принадлежности сущности к связи изображается с помощью кружочка на линии отношения рядом с сущностью, обязательный класс принадлежности – с помощью вертикальной черты на линии отношения рядом с сущностью. Отношение читается вдоль линии либо слева направо, либо справа налево.
На рис. 7.1 приведен пример ER-диаграммы в нотации IE.
увеличить изображение
Рис. 7.1. ER-диаграмма в нотации методологии информационного проектирования (IE)
Моделирование темпоральных данных использует совокупность методов моделирования для создания моделей временных и исторических данных. Модель темпоральных данных — это модель данных, которая состоит из элементов данных и внутренних структур, отражающих изменения элементов модели во времени и фиксирующих те моменты времени, когда эти изменения происходят. Будем называть модель битемпоральной, если в ней присутствуют время операции и время фиксации факта.
Моделирование темпоральных данных является сложной задачей для информационных систем, основанных на реляционных БД.
Во-первых, такие данные не очень удобно представлять в двумерной реляционной модели. Обработка временных данных требует критериев поиска по диапазону, что приводит к использованию соединений таблиц, которые строятся на использовании неравенств. Производительность выполнения таких соединений является проблемой в реляционных БД. Во-вторых, для временных данных часто требуется соединять таблицы на основе перекрытия диапазонов дат. В SQL нет операции, позволяющей непосредственно задать такое соединение, и приходится применять процедурный подход к реализации таких запросов.
Приведем пример темпоральных данных (табл. 7.5). Пусть требуется отслеживать динамику цен на некоторые товары. Цены на товары в любой момент времени могут измениться, поэтому необходимо хранить действительный диапазон дат по каждой цене и по каждому товару.
Просматривая таблицу, легко сможем найти, когда какая цена на данный товар действовала, а также увидеть, что в период с 26.12.2000 по 01.01.2001 цена на данный товар не была установлена. В рассматриваемом примере цена товара обладает характеристикой, которая называется действительностью по дате, т.е. цена на товар действительна только в определенный период времени. При проектировании темпоральных моделей данных необходимо учитывать подобные характеристики данных.
№ | Дата начала действия новой цены | Дата окончания действия цены | Цена, руб. |
---|---|---|---|
1 | 01.01.2000 | 15.06.2000 | 2000 |
2 | 16.06.2000 | 25.12.2000 | 1998 |
3 | 01.01.2001 | 31.12.2001 | 1800 |
4 | 01.01.2002 | 25.03.2002 | 1802 |
5 | 26.03.2002 | 30.09.2002 | 1700 |
6 | 01.10.2002 | 12.11.2002 | 1750 |
7 | 13.11.2002 | 31.12.2002 | 1850 |
8 | 01.01.2003 | 1900 |
Таким образом, темпоральная модель данных отличается от традиционных моделей данных наличием одного существенного элемента — времени. Для представления времени в темпоральной модели данных используются так называемые временные метки (time stamp). Временные метки — это атрибуты, которые связаны с фиксацией показаний времени, например даты события, такого как продажа конкретного товара. Исследование временных меток предметной области является одной из самых главных задач проектировщика при моделировании временных данных, потому что временные метки могут иметь несколько значений, т.е. неоднозначную интерпретацию в рамках предметной области.
При моделировании временных данных обычно применяют следующие интерпретации временных меток.
- Время фиксации события или факта (Valid time), т.е. так называемая действительная дата — это временная метка, которая представляет время события или состояния предметной области, как уже было указано в предыдущем разделе. Например, это дата подписи на документе, показания времени, снятые с контролирующих приборов, дата отгрузки проданного товара со склада и т.д.
- Время операции (Transaction time) — это временная метка, представляющая время, когда была выполнена операция хозяйственной деятельности организации, как уже было указано в предыдущем разделе.
- Время сбора данных (Capture time) — это временная метка, представляющая время, когда данные были извлечены или собраны из источника данных (возможно, некоторой внешней БД).
- Время актуализации данных (Apply time) — это временная метка, связанная со временем загрузки данных в ХД.
- время, определяемое пользователем (User-defined time) – это временная метка, представляющая момент или моменты времени, которые пользователь намерен хранить в атрибуте сущности, но непосредственно не связанные с фиксацией временной зависимости в модели данных. Например, атрибуты "День рождения", "День государственного праздника" и т.п.
Темпоральные данные в ХД будут представлены колонками таблиц с типом "дата/время". Поскольку интерпретация временных меток в рамках предметной области может быть различной, каждая из таких интерпретаций порождает свой собственный домен в реляционной БД. Анализ данных часто использует операции поиска и выборки данных на соединениях таблиц. Если в таких операциях соединения будут использоваться временные метки, то их домены должны совпадать. Поэтому проектировщик ХД должен очень внимательно определить временные метки ХД, т.е. изучить их интерпретацию и соответствующим образом определить для каждой метки свой домен. Проектировщик фиксирует интерпретацию временных меток ХД в метаданных, о которых речь пойдет дальше.
Существует два основных типа временных меток — моментные временные метки, или временная метка события (Instant timestamp), и временные метки диапазона, или интервальные временные метки (Interval timestamp).
Моментная временная метка — это временная метка с одним значением, которое представляет момент времени. Такие метки используются для представления в ХД объектов, изменяющихся во времени, таких как операции или события хозяйственной деятельности. Также такие временные метки применяются для фиксации изменения значений данных, извлекаемых из оперативных систем и затем сохраняемых в ХД.
Интервальные временные метки представляют собой период времени или диапазон и содержат обычно два значения: начала и окончания периода или длины интервала. Такие временные метки используются обычно для моделирования состояния объекта и его поведения во времени. В случае если длина интервала является фиксированной, например, день или месяц, то для представления интервальной временной метки можно задействовать одно значение.
На рис. 7.2 показаны примеры определения сущностей с моментной временной меткой (Сущность_1) и интервальными временными метками (Сущность_2).
Необходимость учитывать в модели данных элемент времени ставит перед проектировщиком ХД следующие задачи.
- Выбор подхода к моделированию темпоральных данных.
- Определение домена атрибута "время".
- Определение структуры домена атрибута "время".
- Определение атрибутов временных меток.
- Нормализация временных зависимостей.
- Выбор того, что моделировать — состояния или события?
- Отображение темпоральной модели данных на исходную статическую модель данных.
Для моделирования темпоральных данных предметной области необходимо расширить модель введением в нее темпоральных (временных) сущностей или отношений. Такое расширение может быть сделано различными способами.
В настоящее время при создании темпоральной модели данных наиболее широко используются следующие подходы:
- накопление моментальных снимков, или кумулятивных снимков (Cumulative snapshots);
- поддержка истории изменений данных, или непрерывной исторической модели (Continuous history model), – таблицы событий и состояний.
Далее рассмотрим каждый из указанных подходов более подробно.
Модель, основанная на таблицах моментальных снимков
Подход к моделированию темпоральных данных , основанный на накоплении моментальных снимков, состоит в сборе снимков фрагмента предметной области и накоплении таких снимков в различных фрагментах БД или другой БД как истории жизни данных предметной области. Например, если снимки фиксируются в конце дня, то совокупность собранных за период снимков будут представлять ежедневное изменение картины данных предметной области, поддерживаемой в БД.
Таблица реляционной БД, представляющая моментальные снимки, называется таблицей моментального снимка (Snapshot Table). Рассмотрим пример такой таблицы (табл. 7.1). Временные метки в ней отсутствуют. Проектировщик может добавить временную метку со временем, определенным пользователем. Эта таблица представляет экземпляры сущности предметной области так, как они существуют в данный момент времени. Операция обновления таблицы реляционной БД является деструктивной – никакой истории изменения данных во времени не поддерживается.
В табл. 7.6 показано содержание таблицы моментального снимка (Empl) до и после обновления.
Ниже приведены примеры операторов манипулирования данными SQL с таблицей моментального снимка Empl.
Удаление кортежа таблицы:
DELETE FROM Empl WHERE Name = 'Амосова Е.С.';
Добавление кортежа в таблицу:
INSERT INTO Empl VALUES ('Рыков А.С.','ОВИР','12000');
Обновление кортежа таблицы:
UPDATE Empl SET Dept = 'ОВИР', Sal ='11500' WHERE Name = 'Амосова Е.С.';
Метод кумулятивных снимков применяется и вне рамок моделирования темпоральных данных. Он прост и понятен, однако имеет ряд недостатков. Первый недостаток — это избыточность данных, которая возникает в результате периодической перезагрузки данных из источника данных. При этом объем ХД быстро растет. Чтобы устранить этот недостаток, часто применяют агрегирование данных с суммированием показателей или введение версий снимков.
Вторым недостатком такого подхода является возможная потеря информации. Этот недостаток связан с проблемой синхронизации изменений состояния данных в источниках данных и моментом фиксации снимка в ХД. Проблема отражения смены состояний данных предметной области в ХД является одной из самых сложных задач, которые должен решить проектировщик ХД. В рамках подхода, основанного на накоплении снимков, бывает достаточно трудно решить такую задачу. Например, если данные нужно фиксировать ежесекундно, то объем данных в ХД будет расти так быстро, что проект создания ХД станет непомерно дорогим. Такие ситуации могут встретиться в предметных областях, связанных с аудитом биржевых операций.