Эволюция баз данных
.pdfется множество значений, называемое мерой данного измерения. Таким образом, любая строка таблицы фактов образует точку в пространстве.
|
|
|
|
|
|
Таблица фактов ПРОДАЖА ТОВАРА |
|
|
Таблица 12 |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ID_ |
|
|
ID_Дата |
|
|
Код |
|
|
ID_ |
|
Количество |
|
Цена |
|||||||||||
Продажи |
|
|
|
|
товара |
|
|
Магазин |
|
|
товара |
|
сделки |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
1 |
|
|
|
|
D002 |
|
|
20023564 |
|
|
S002 |
|
|
|
1 |
|
|
11990 |
|||||||
2 |
|
|
|
|
D001 |
|
|
20022746 |
|
|
S002 |
|
|
|
1 |
|
|
6890 |
|
||||||
3 |
|
|
|
|
D002 |
|
|
20022746 |
|
|
S003 |
|
|
|
2 |
|
|
13780 |
|||||||
4 |
|
|
|
|
D003 |
|
|
30013170 |
|
|
S002 |
|
|
|
1 |
|
|
59990 |
|||||||
|
|
|
|
|
|
|
|
Таблица измерения МАГАЗИН |
|
|
|
|
Таблица 13 |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
ID_Ма- |
|
Название |
|
|
|
Регион |
|
|
Населен- |
|
|
|
Адрес |
||||||||||||
газин |
|
магазина |
|
|
|
|
|
ный пункт |
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
S001 |
|
М-Видео |
|
Калужская обл. |
|
Обнинск |
|
пр. Маркса, 45 |
|||||||||||||||||
S002 |
|
М-Видео |
|
Рязанская обл. |
|
Рязань |
|
|
|
Московское ш., 5А |
|||||||||||||||
S003 |
|
М-Видео |
|
Кировская обл. |
|
Киров |
|
|
|
Ул. Горького, 5А |
|||||||||||||||
|
|
|
|
|
|
|
|
|
Таблица измерения ТОВАР15 |
|
|
|
|
Таблица 14 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
Код |
|
|
|
Наименование |
|
Единица |
|
Наимено- |
Наименова- |
|||||||||||||||
|
|
|
|
|
измере- |
|
вание ка- |
ние произ- |
|||||||||||||||||
товара |
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
ния |
|
тегории |
|
водителя |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
20023564 |
|
|
Стиральная машина |
|
|
шт. |
|
Бытовая |
Samsung |
||||||||||||||||
|
|
|
|
|
WF-M509NZW |
|
|
|
|
|
|
техника |
|
|
|
|
|||||||||
20022746 |
|
|
Пылесос ZSC6930 |
|
|
шт. |
|
Бытовая |
Electrolux |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
техника |
|
|
|
|
||||
30013170 |
|
|
Ноутбук ICONIA |
|
|
шт. |
|
Компью- |
Acer |
||||||||||||||||
|
|
|
|
|
484G64is |
|
|
|
|
|
|
|
|
|
теры |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
Таблица измерения ДАТА |
|
|
|
|
Таблица 15 |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
ID_Дата |
|
Год |
|
|
Квартал |
|
Месяц |
|
День |
|
День недели |
|
||||||||||||
|
D001 |
|
2011 |
|
|
2 |
|
|
06 |
|
|
21 |
|
|
|
ВТР |
|
||||||||
|
D002 |
|
2011 |
|
|
2 |
|
|
06 |
|
|
22 |
|
|
|
СРД |
|
||||||||
|
D003 |
|
2011 |
|
|
2 |
|
|
06 |
|
|
23 |
|
|
|
ЧТВ |
|
15Данные взяты с сайта сети магазинов М-Видео. Автор данного пособия не является клиентом этого магазина, а его упоминание абсолютно случайно и не является рекламой.
41
|
МАГАЗИН |
|
|
|
|
|
|
|
|
|
||||||||
ID_Магазин |
|
|
|
|
|
|
|
|
|
|
||||||||
Название магазина |
|
|
|
|
|
|
|
|
|
|||||||||
Регион |
|
|
|
|
|
|
|
|
|
|||||||||
Населенный пункт |
|
|
|
|
|
|
|
|
|
|||||||||
Адрес |
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
ПРОДАЖА ТОВАРА |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ID продажи |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ID_Дата |
|
|
|
|
|
|
|
|
Где продан |
|
|
|
|
|
|
|
||||||||||
|
Код товара |
|
|
|
|
|
|
|
||||||||||
Когда продан |
ID_Магазин |
|
|
Что продано |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
Количество товара |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Цена сделки |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ДАТА |
|
|
|
|
|
|
|
|
|
|
ТОВАР |
|
|
|
|
|
|
|
|
|
|
|
|
|
Код товара |
|
|
|
|
ID_Дата |
|
|
|
|
|
|
|
|
|
|
|
|
||
Год |
|
|
|
|
|
|
|
|
|
Наименование |
|
|
|
|
Квартал |
|
|
Произведен |
Единица измерения |
|
Относится к |
||||||||
Месяц |
|
|
|
|
|
|
|
|
|
ID_Категория |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||
День |
|
|
|
|
|
|
|
|
|
ID_Производитель |
|
|
|
|
День недели |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПРОИЗВОДИТЕЛЬ
ID_Производитель Наименование производителя Торговая марка Страна
КАТЕГОРИЯ
ID_Категория Наименование категории Ограничения по продаже
Рис. 19. Схема данных в виде снежинки16
Необходимо отметить, что многомерный куб – это понятие концептуального уровня, которое ничего не говорит о способе физической организации данных. Его хранение в виде реляционной базы данных, т.е. в виде совокупности файлов, каждый из которых содержит одну таблицу, не всегда удобно. Попробуем проследить логику работы СУБД при попытке сформировать полное информационное описание продажи №3 из приведенного выше примера:
1)открыть файл ПРОДАЖА ТОВАРА и найти запись с ID_Прода-
жи = 3;
2)открыть файл ДАТА и найти запись с ID_Дата = D002; прочитать эту запись и подставить полученную информацию в итоговое описание продажи;
3)открыть файл ТОВАР, найти и прочитать запись с Код товара
=20022746;
16Схема данных представлена в виде диаграммы «сущность-связь». Несмотря на то, что в данном пособии тема концептуального моделирования не рассматривается, простого взгляда на схему достаточно, чтобы понять, что каждый прямоугольник – это отношение (таблица), прописными буквами указано его название, после чего перечислены его поля.
42
Рис. 20. Трехмерный куб продаж товаров
4) открыть файл МАГАЗИН, найти и прочитать запись с ID_Мага-
зин = S003.
Только после этих действий получаем полное описание продажи №3: 22 июня 2011 г. (в среду) в магазине М-Видео по адресу Кировская обл., г. Киров, ул. Горького, 5А в категории «бытовая техника» был продан пылесос Electrolux ZSC6930 в количестве 2 шт. на сумму 13780 руб.
Процедура становится очень трудоемкой, если необходимо обрабатывать десятки тысяч таких продаж. Упростить ситуацию можно, поместив все данные в одну таблицу ПРОДАЖА ТОВАРА
(Год, Квартал, Месяц, День, День недели, Наименование, Единица измерения, Наименование категории, Наименование производителя, На-
звание магазина, Регион, Населенный пункт, Адрес, Количество товара,
Цена сделки). Этот процесс называется денормализацией – в противоположность нормализации, декомпозирующей одно отношение на несколько с целью устранения избыточности и повышения неза-
43
висимости данных. Итоговая таблица будет очень громоздкой, неоптимальной с точки зрения использования памяти, однако удобной для выборки одновременно всей необходимой информации.
2.9. Объектно-ориентированные базы данных
Другим направлением структурирования сложной многомерной информации является применение объектно-ориентированного подхода к хранению данных. Хотя работы в этом направлении велись с середины 1970-х гг., его формирование и сам термин «объектноориентированная база данных» (ООБД) связываются с манифестом [18], обнародованным в 1989 г. В нем были сформулированы основные характеристики, но не модель ООБД, строгого определения которой не существует до сих пор. В 1991 г. была сформирована группа по управлению данными, представленными в виде объектов
– ODMG (Object Data Management Group, англ.), преобразованная в 1998 г. в группу по управлению ООБД (Object Database Management Group, англ.). Эта группа просуществовала до 2001 г. и опубликовала несколько редакций требований к объектной модели данных, языку определения объектов, объектному языку запросов и к интерфейсам с языками программирования. Последняя версия этих требований – ODMG 3.0 стала, по существу, стандартом ООБД.
Данный подход основан на традиционной объектно-ориентиро- ванной парадигме, где любая конкретная сущность предметной области (например, работник Петров С.В. или пылесос ZSC6930) представляется в виде объекта, имеющего свой уникальный идентификатор. Каждый объект имеет состояние и поведение. Состояние – это набор значений его атрибутов. Значение атрибута – это тоже объект или множество объектов. Поведение – это изменение значений, производимое с помощью ассоциированных с объектов методов. Взаимодействие между объектами осуществляется посредством передаваемых друг другу сообщений. Например, сообщение «примени к себе данный метод» вызовет запуск соответствующей процедуры и, возможно, последующее изменение состояния объекта. Множество подобных объектов с одинаковыми атрибутами и методами образует класс. Классы в свою очередь могут образовывать иерархию.
На рисунке 21 приведен пример реализации базы данных, показанной на рис. 13, 14 и в табл. 7–9, с помощью объектно-ориенти-
44
рованной парадигмы17. Сравнив рис. 21 и 14, можно увидеть, что структурно ООБД очень напоминает иерархическую модель. Это вызвано тем, что основным видом связи между объектами и классами является обобщение, обеспечивающее наследование свойств.
Рис. 21. Объекты, атрибуты и методы
Общими для всех классов ООБД являются методы «Создать объект», «Удалить объект». Метод ПЕРЕВЕСТИ класса ОТДЕЛ (рис. 21) позволяет перевести работника из одного отдела в другой, а
17Данный пример лишь иллюстрирует введенные понятия и не является строгой объектно-ориентированной схемой.
45
метод НАЗНАЧИТЬ класса РАБОТНИК – изменить должность работника.
В чем же отличие объектно-ориентированной базы данных от традиционной. В традиционных базах данных основная задача СУБД состоит в поддержании и обслуживании структуры данных,
вто время как их обработка и изменение ложатся на прикладную программу. В объектно-ориентированном подходе изменение данных – это изменение состояния объекта, осуществляемое методами, ассоциированными с объектом [7]. Иначе говоря, в ООБД процедуры обработки являются частью данных, т.е. данные и процедуры объединены – инкапсулированы вместе.
Из-за привлекательности объектно-ориентированного подхода
впоследние двадцать лет наблюдается высокая активность в создании СУБД18. Согласно [16], сегодня их насчитывается около 300. Однако большинство из них являются экспериментальными прототипами, в то время как коммерческих продуктов сравнительно немного – наиболее испытанные временем представлены в табл. 16.
|
|
Таблица 16 |
|
Объектно-ориентированные СУБД |
|
|
|
|
СУБД |
Производитель |
История и характеристика |
VOB (Ve- |
Versant Corporation |
Одна из первых коммерческих ООБД |
rsant Ob- |
(США). В 2004 г. в нее |
создана в первой половине 1990-х гг. |
ject Data- |
вошла европейская |
Имеет собственный язык запросов, |
base) |
Poet Software GmbH |
похожий на SQL-92 |
Objectivi- |
Objectivity, Inc. (США) |
Проект стартовал в начале 1990-х гг. |
ty/DB |
|
Основан на стандарте ODMG-3.0. |
|
|
Сегодня доступна версия 10 |
Object |
Object Design, Inc., с |
Выпускается с начала 1990-х гг. Се- |
Store |
2002 г. – Progress |
годня доступна версия 7 |
|
Software (США) |
|
2.10. Темпоральные базы данных
Сегодня практически в любой СУБД предусмотрен тип данных, связанный со временем. В любую таблицу можно добавить атрибут «время», в результате чего любая строка данной таблицы автоматически «привязывается» к «своему» моменту времени, указанному в этом поле. Однако интерпретация и восстановление связи данных
18Аналогичная ситуация наблюдалась и с реляционными СУБД, однако со временем произошло резкое укрупнение производителей.
46
по времени остается за разработчиком. Темпоральная база данных отличается от традиционной тем, что любые данные в ней рассматриваются как изменяющиеся во времени и истинные только в определенный момент или интервал времени [5].
Базовым понятием в темпоральной базе данных является линия времени – представление моментов и интервалов времени, характеризующих истинность хранимой информации19. Как правило, обычная база данных хранит лишь текущую информацию, т.е. информацию, которая истинна в данный момент времени. Если информация меняется, например, происходит повышение зарплаты сотрудника, то размер новой зарплаты записывается на место старой (табл. 17). И уж тем более, эта информация исчезнет после увольнения сотрудника и удаления соответствующей записи. В отличие от обычной, в темпоральной базе данных сохраняется вся история данных. Известны два основных способа формирования линии времени:
1)указание интервалов времени, в течение которых определенный факт являлся истинным (табл. 18);
2)указание фактов, которые являлись истинными в определенный момент времени (табл. 19).
Таблица 17
Данные без темпоральных расширений
Номер |
Фамилия И.О. |
Оклад |
1376 |
Сидоров А.Г. |
18.000 |
|
|
|
427 |
Иванова И.В. |
12.000 |
Таблица 18 Интервальное представление темпорального расширения данных
Номер |
Фамилия И.О. |
Оклад |
Время |
1376 |
Сидоров А.Г. |
16.000 |
с 01.01.2010 по 31.12.2010 |
1376 |
Сидоров А.Г. |
19.000 |
с 01.01.2011 по 31.01.2011 |
1376 |
Сидоров А.Г. |
21.000 |
с 01.02.2011 |
427 |
Иванова И.В. |
12.000 |
с 01.01.2010 по 31.08.2010 |
427 |
Иванова И.В. |
13.000 |
с 01.09.2010 по 31.12.2010 |
427 |
Иванова И.В. |
13.500 |
с 01.01.2011 |
19Строго говоря, существуют две линии времени – действительная (valid time) и транзакционная (transaction time). В тексте речь идет о первом типе.
47
Таблица 19 Точечное представление темпорального расширения данных
Время |
1376, Сидоров А.Г. |
427, Иванова И.В. |
01.01.2010 |
16.000 |
11.000 |
02.01.2010 |
16.000 |
11.000 |
… |
|
|
31.08.2010 |
16.000 |
11.000 |
01.09.2010 |
16.000 |
11.500 |
… |
|
|
31.12.2010 |
16.000 |
11.500 |
01.01.2011 |
17.000 |
12.000 |
02.01.2011 |
17.000 |
12.000 |
… |
|
|
31.01.2011 |
17.000 |
12.000 |
01.02.2011 |
18.000 |
12.000 |
… |
|
|
Сейчас |
18.000 |
12.000 |
В обоих случаях важным свойством линии времени является гранулярность, т.е. шаг разбиения времени на моменты, которые считаются различными.
Для работы с темпоральными базами данных в 1994 г. был разработан язык TSQL2 (SQL/Temporal), являющийся расширением традиционного SQL, и созданы немногочисленные СУБД (табл. 20).
|
|
Таблица 20 |
|
Темпоральные СУБД |
|
|
|
|
СУБД |
Производитель |
История и характеристика |
TimeDB |
Andreas Steiner, |
Прототип создан в 1997 г. на Прологе при |
|
TimeConsult |
подготовке диссертации А. Стейнера. С |
|
(Швейцария) |
2005 г. доступна версия 2.2 на Java |
Informix |
IBM (США) |
Модуль, расширяющий функциональность |
TimeSeries |
|
СУБД Informix (см. табл. 10). Поддержива- |
Datablade |
|
ет все основные платформы. Создан в |
|
|
2002 г., в настоящее время доступна вер- |
|
|
сия 4 |
Immortal |
Microsoft (США) |
Исследовательский проект, ориентирован- |
DB |
|
ный на поддержку версионности базы дан- |
|
|
ных, созданной в MS SQL Server. Старто- |
|
|
вал в 2002 г. |
48
Учитывая, что время является непременным атрибутом естественной жизни, идеология темпоральных баз данных применима практически во всех прикладных задачах, таких как формирование и хранение мультимедийного контента, совмещение пространственных и временных данных (например, движение автомобиля по дорогам или товара по складам) [5], поддержка версионности программ и документов, управление технологическим процессом и др.
2.11. Нереляционные базы данных
В 2000-е гг. с появлением web-ресурсов с огромными хранилищами разнородной информации разработчики стали все больше экспериментировать с новыми идеями. Реляционный подход основан на четком структурировании данных и строго формализованном доступе к ним, что делает базы данных негибкими и замедляет скорость работы. Новый подход базировался на отказе от фиксированной схемы данных и языка SQL. В 1998 г. этот подход получил название NoSQL, которое разными авторами трактуется как «нереляционная» или «не только SQL» (not only SQL, англ.). «Нереляционная» не означает антиреляционная – адепты этого направления, не отрицая достоинств реляционного подхода, лишь подчеркивают новые возможности нереляционного.
Рассмотрим основные понятия и нереляционные технологии хранения на примере данных, показанных в отношении РАБОТНИК, введенном в разд. 2.6 (табл. 21) 20.
Таблица 21
Отношение РАБОТНИК
Фамилия И.О. |
Дата рождения |
Пол |
Должность |
Петров С.В. |
21.09.1978 |
М |
Начальник |
Иванова И.В. |
18.07.1963 |
Ж |
М.н.с. |
Павлова В.Н. |
23.01.1967 |
Ж |
С.н.с. |
Алексеев А.С. |
21.07.1971 |
М |
С.н.с. |
Сидоров А.Г. |
13.05.1958 |
М |
Аналитик |
20 Это отношение идентично приведенному ранее в табл. 7. Отличием является то, что в качестве ключа для наглядности мы используем фамилию и инициалы работника, предполагая, что в нашей организации нет работников с одинаковыми фамилией и инициалами.
49
Первое важное «нереляционное» понятие – ассоциативный массив (другие названия – ассоциативный контейнер, отображение, конечное отображение, словарь21 ), который представляет собой пару «ключ-значение». Подобно математической функции, связывающей независимую переменную x с зависимой y, ассоциативный массив отображает ключ на значение, т.е. ассоциирует значение с ключом. Например, с ключом Петров С.В. ассоциировано значение
Начальник; иначе говоря, имеем пару <Петров С.В., Начальник>. В
качестве значения могут быть как атомарная единица данных, так и более сложная конструкция, например, список.
Ассоциативные массивы легли в основу так называемых key-va- lue-баз данных (другие названия – кортежные хранилища или хранилища «ключ-значение»), образцами которых, согласно данным англоязычной Wikipedia, являются Cassandra (Apache Software Foundation, 2008), GT.M (Fidelity National Information Services, Inc., 2000), Redis (VMware, 2009), Riak (Basho Technologies) и др.
Расширением ассоциативного массива стал трипл (triple – тройка, англ.) – три элемента, связанные в выражение «субъект – предикат – объект» [25]. Если на первое место в этой тройке поставить некоторый конкретный материальный объект, на второе – его свойство, а на третье – значение этого свойства, то получаем классический элемент информации «объект-атрибут-значение», например, <Петров С.В., Должность, Начальник>. По существу трипл – это одна ячейка классического отношения. Благодаря указанию свойства, для которого приведено значение, триплы являются более информативными, чем пары «ключ-значение». В случае пар каждый объект может быть представлен в базе данных лишь единожды, иначе нарушится свойство уникальности ключа. В случае триплов каждому объекту может соответствовать столько триплов, сколько свойств имеет данный объект. Например, отношение, показанное в табл. 21, можно представить следующими триплами<Петров: С.В., Дата рождения, 21.09.1978>;
<Петров С.В., Пол, М>; <Петров С.В., Должность, Начальник>;
<Иванова И.В., Дата рождения, 8.07.1963 > …
21 В отечественной литературе еще не сформировалась устойчивая терминология в области нереляционных баз данных, поэтому приводимые здесь термины не являются единственными и окончательными.
50