Объектно-реляционные базы данных: прошедший этап или недооцененные возможности?

advertisement
Объектно-реляционные
базы данных: прошедший
этап или недооцененные
возможности?
Сергей Кузнецов
Институт системного
программирования РАН
kuzloc@ispras.ru
План выступления
 10 лет ОРСУБД
 Informix Universal Server, Oracle8, DB2 Universal
Database
 Коротко о предпосылках ОРСУБД
 Объектно-реляционные базы данных и язык SQL
 SQL как модель данных
 Гармонична ли «объектная» часть модели?
 Кто и как использует ОРСУБД?
 Проблемы использования ОРСУБД
 Каковы перспективы?
Корпоративные базы данных
24 апреля 2007 г.
2
10 лет ОРСУБД
Почему десять?
Что произошло в декабре 2006 г.?
Informix, Illustra и Майкл Стоубрейкер
Значит ли это, что Стоунбрейкер является
отцом объектно-реляционного подхода?
 А что такое «объектно-реляционные» базы
данных?
 Личная точка зрения: Манифест систем баз
данных следующего поколения, SQL,
реализации IBM и Oracle




Корпоративные базы данных
24 апреля 2007 г.
3
Informix Universal Server
 Декабрь 1996 г. – январь 1997 г.
 Интеллектуальные большие объекты
(smart large objects)
 Индивидуальные типы данных (Distinct
Types)
 Типы данных со скрытой структурой
(Opaque Types)
Корпоративные базы данных
24 апреля 2007 г.
4
Informix Universal Server
 Составные типы данных
 Могут иметь структуру записи,
множества, мультимножества или
списка
 Значениями столбцов таблиц могут
быть записи, множества или списки,
состоящие в свою очередь из
атомарных или структурных значений
Корпоративные базы данных
24 апреля 2007 г.
5
Informix Universal Server
 Тип данных со структурой записи
 CREATE ROW TYPE <имя типа>
( <имя поля> <тип поля>, . . . )
 Три вида типов коллекций: множеств,
мультимножеств и списков
 CREATE TYPE <имя типа> SET <тип элементов>
NOT NULL
 CREATE TYPE <имя типа> MULTISET <тип
элементов> NOT NULL
 CREATE TYPE <имя типа> LIST <тип элементов>
NOT NULL
Корпоративные базы данных
24 апреля 2007 г.
6
Informix Universal Server
 Механизм наследования может применяться к
типам записей и таблицам
 Одиночное наследование
 Все функции, определенные для супертипа,
автоматически распространяются на все его
подтипы
 Для подтипов могут определяться свои функции
 Значения подтипов могут использоваться почти
везде, где разрешено употребление значений их
супертипов
 Единственное ограничение возникает при
отведении памяти и хранении значений
 Здесь соответствие типов должно быть точным
Корпоративные базы данных
24 апреля 2007 г.
7
Informix Universal Server
 Tипизированные таблицы (типами записи)
 CREATE TABLE … OF TYPE …
 При определении подтаблиц некоторые
свойства супертаблиц могут
переопределяться (например, опции
хранения)
 Операции SELECT, UPDATE и DELETE,
примененные к супертаблице,
распространяются также и на все ее
подтаблицы
 Конструкция ONLY
Корпоративные базы данных
24 апреля 2007 г.
8
Informix Universal Server
 Новые базовые типы данных можно определять
одновременно с введением специальных алгоритмов
хранения, доступа и индексирования, которые отличаются от
стандартных алгоритмов, реализованных в сервере
 Для введения нового базового типа данных с нестандартными
методами доступа нужно определить набор серверных
функций, реализующий для нового типа алгоритмы доступа,
просмотра, выделения памяти и т.д.
 Эти функции должны быть написаны на языке C и
скомпилированы в объектный формат
 Далее надо описать новый базовый тип данных, и указать
функции, реализующие для этого типа алгоритмы извлечения
и записи на диск значений данного типа
 Модули DataBlade
Корпоративные базы данных
24 апреля 2007 г.
9
Oracle8
 Июнь 1997 г.
 Основные доработки: Oracle 9i (2002 г.);
наследование и другие возможности,
соответствующие SQL:1999
 Объектные типы – аналог типа записи в IUS
 CREATE TYPE <имя типа> AS OBJECT
( <имя поля> <тип поля>, . . . )
 Для доступа к отдельным полям значений
объектного типа используется точечная
нотация
Корпоративные базы данных
24 апреля 2007 г.
10
Oracle8
 Методы объектных типов
 Функции или процедуры, написанные на
PL/SQL, Java, C или другом языке и
сохраненные в БД или вне ее
 Методы-члены
 Статические методы
 Методы сравнения
 Сравнение объектов может производиться с
помощью методов вида MAP или вида
ORDER
Корпоративные базы данных
24 апреля 2007 г.
11
Oracle8
 Метод типа MAP принимает в качестве параметра
объект некоторого объектного типа, а возвращает
значение одного из встроенных типов, которое
может использоваться в операциях сравнения и
сортировки
 Метод типа ORDER сравнивает два объекта и
возвращает –1, если первый объект меньше
второго, 0, если объекты равны, и 1, если первый
объект больше второго
 Если при определении объектного типа метод
сравнения не задан, то объекты этого типа можно
сравнивать только на равенство/неравенство,
причем объекты не должны содержать элементов
типа LOB
Корпоративные базы данных
24 апреля 2007 г.
12
Oracle8
 Объектная таблица – таблица, строки
которой имеют объектный тип
 В Oracle8 не поддерживалось
наследование, но в Oracle8i появилась
возможность наследования таблиц, но
без поддержки параллельной
иерархии наследования объектных
типов
 Объектные представления
Корпоративные базы данных
24 апреля 2007 г.
13
Oracle8
 Строки объектных таблиц называются строчными объектами
(row objects)
 Для всех строчных объектов обеспечивается возможность
уникальной идентификации
 Столбец любой таблицы может быть определен на
встроенном типе REF
 Значения этого столбца являются своего рода указателями на
строчные объекты той же самой или другой объектной
таблицы
 Система не берет на себя ответственность за согласование
ссылок; за это отвечают пользователи
 Поддерживается встроенная функция REF, позволяющая
получить значение объектного идентификатора указанной
строки
 Наличие в объектной таблице столбцов ссылочного типа
позволяет в ряде случаев упрощать формулировку запросов
(с духе путевых выражений ODMG)
Корпоративные базы данных
24 апреля 2007 г.
14
Oracle8
 Типы коллекций: табличные типы (table types) и
типы массивов
 CREATE TYPE <имя типа> AS TABLE OF <тип
элемента>
 Точечная нотация для доступа к вложенным
таблицам
 CREATE TYPE <имя типа> AS VARRAY (
<литеральное натуральное число> )
OF <тип элемента>
 На уровне прямого SQL можно работать только с
массивами целиком
 Возможность привести в запросе (или другом
операторе SQL) тип массива к табличному типу
Корпоративные базы данных
24 апреля 2007 г.
15
DB2 Universal Database
 Конец 1997 г.
 Базовые идеи объектно-реляционных
расширений были заложены в
продукте DB2 for Common Servers,
выпущенном в 1995 г. (статья Дона
Чемберлина)
 BLOBы, триггеры, UDF, distinct types,
экстендеры
 Постепенное наращивание
возможностей в следующих выпусках
Корпоративные базы данных
24 апреля 2007 г.
16
DB2 Universal Database
 Механизм структурных типов с самого начала
включал не только возможность определения типов
со структурой, но и средства определения иерархий
типов и иерархий таблиц
 Допускалось использование “ссылок” для
определения связей между объектами и навигации
от одного объекта к другому
 Методы очень похожи на UDF в том отношении, что
они могут быть написаны на SQL или на внешнем
языке, например, на Java или C
 Но методы всегда ассоциируются с некоторым
структурным типом, и их вызовы производятся в
синтаксисе, отличном от синтаксиса вызова UDF
Корпоративные базы данных
24 апреля 2007 г.
17
DB2 Universal Database
 При определении типизированной таблицы нужно явно
специфицировать дополнительный столбец, в котором будут
храниться значения объектных идентификаторов (OID)
каждого объекта (строки), содержащейся в таблице
 Столбец OID создается как первый столбец таблицы, и за ним
следуют столбцы, соответствующие атрибутам типа таблицы
 Объектные идентификаторы используются в операциях
разыменования (dereference), т.е. обеспечивают возможность
добраться до строки по ссылке и преобразовать ее в
экземпляр (значение) структурного типа
 Все строки подтаблиц доступны через запрос, адресуемый к
их супертаблице
 Возможности OUTER и ONLY
 D запросах на DB2 SQL можно использовать путевые
выражения, но не в “точечной”, а в “стрелочной” нотации
Корпоративные базы данных
24 апреля 2007 г.
18
DB2 Universal Database
 Объектные представления – это виртуальные
таблицы, которые могут обладать структурой и
поведением, отличным от структуры и поведения
базовых таблиц, лежащих в основе этих
представлений
 Как и в случае типизированных таблиц,
определение объектного представления
основывается на определении структурного типа
 Объектные представления можно использовать для
ограничения доступа к подмножеству строк
иерархии таблиц или для сокрытия некоторых
столбцов этой иерархии
 Долгое время не поддерживались типы коллекций,
но теперь DB2 UDB более всех соответствует
стандарту SQL
Корпоративные базы данных
24 апреля 2007 г.
19
Коротко о предпосылках
ОРСУБД
 Манифест баз данных третьего поколения (1990 г.)
 В конце 80-х Вон Ким основал компанию UniSQL,
выпустившую в 1991 г. первую версию продукта
UniSQL, который Вон Ким стал называть объектнореляционной системой
 Четыре принципа:
 Значениями атрибутов отношений могут быть не
только литеральные значения, но и объекты;
 Значения атрибутов отношений не обязательно
являются атомарными;
 При построении таблиц (классов) может
использоваться механизм наследования;
 Классы включают операции
Корпоративные базы данных
24 апреля 2007 г.
20
Коротко о предпосылках
ОРСУБД
 Майкл Стоунбрейкер
 Ingres и Postgres
 В Postgres допускалось хранение в полях
отношений данных абстрактных, определяемых
пользователями типов
 В 90-е гг. Стоунбрейкер создал компанию Illustra,
основной целью которой был выпуск коммерческого
варианта СУБД Postgres, получившего название
Illustra
 В этой системе поддерживались основные идеи
Postgres, но уже присутствовала и поддержка языка
SQL
Корпоративные базы данных
24 апреля 2007 г.
21
Объектно-реляционные
базы данных и язык SQL
 SQL3, SQL:1999, SQL:2003
 При определении объектной модели SQL
участники процесса стандартизации
тщательно проанализировали ряд других
языков и систем с целью выяснения
достоинств и недостатков их объектных
моделей
 Выработанная объектная модель похожа на
объектную модель языка Java, но при этом
адаптирована к природе языка SQL как
языка СУБД с наличием стабильно
хранимых метаданных и данных
Корпоративные базы данных
24 апреля 2007 г.
22
Объектно-реляционные
базы данных и язык SQL
 Два основных отличительных компонента –
структурные, определяемые пользователями
типы данных (User Defined Type – UDT) и
типизированные таблицы (Typed Table)
 Первый компонент позволяет определять
новые типы данных, которые могут быть
гораздо более сложными, чем встроенные типы
данных языка SQL
 Второй компонент – типизированные таблицы –
позволяет определять таблицы, строки которых
являются экземплярами (или значениями) UDT,
с которым явно ассоциируется таблица
Корпоративные базы данных
24 апреля 2007 г.
23
SQL как модель данных
 SQL – большой и «многослойный» язык
 Однако, если сопоставлять возможности SQL с
возможностями реляционной модели данных,
можно установить, что в настоящее время в
спецификации SQL представлена законченная
модель данных, отличающаяся от реляционной
поддержкой мультимножеств и неопределенных
значений
 Развитые возможности структуризации
(включая полную систему типов),
манипулирования данными и поддержки
ограничений
Корпоративные базы данных
24 апреля 2007 г.
24
Гармонична ли
«объектная» часть модели
данных SQL?
 Далее исключительно личная точка зрения
 Та часть расширений, которая относится к
системе типов (типы коллекций, UDT,
наследование и т.д., кроме ссылочных
типов), вполне гармонична и не выходит за
пределы даже реляционной модели
 Ссылочные типы, типизированные таблицы
и представления, поддержка путевых
выражений вызывают подозрения
Корпоративные базы данных
24 апреля 2007 г.
25
Гармонична ли
«объектная» часть модели
данных SQL?
 Типизированные таблицы и представления
позволяют писать запросы в стиле OQL
 Но может ли грамотный пользователь забыть про
скрытые внешние ключи и соединения?
 Действительно ли различия между прямой и
ассоциативной адресацией не являются
существенными?
 Вопрос, заслуживающий исследования
 Что скажет новый стандарт объектной модели
данных?
 http://www.omg.org/cgi-bin/doc?mars/2006-2-18
 Request for Information (RFI)
Корпоративные базы данных
24 апреля 2007 г.
26
Кто и как использует
ОРСУБД?
 Используют мало возможностей
 Борис Новиков: хранимые процедуры,
функции, пакеты
 Нет известных примеров приложений со
своими типами данных
 Совсем неизвестны приложения с
типизированными таблицами
 Положительный пример Oracle Express
 Но все делают сами производители
 Почему?
Корпоративные базы данных
24 апреля 2007 г.
27
Проблемы
использования ОРСУБД
 Мне кажется, что дело не в «объектности»
 Слишком много возможностей
 Как распределять функциональную нагрузку
между сервером баз данных, сервером
приложений и приложением?
 Что теперь означает «независимость базы
данных от приложения»?
Корпоративные базы данных
24 апреля 2007 г.
28
Проблемы
использования ОРСУБД
Даже если от этого отвлечься
Когда и как использовать типы коллекций?
Нет методологии
Нужно ли проектировщику знать об
особенностях реализации, например,
вложенных таблиц?
 Аскетичность Кодда понятнее сегодняшнего
богатства
 Аналогичные проблемы в базах XML-данных




Корпоративные базы данных
24 апреля 2007 г.
29
Каковы перспективы?
 Сделано очень много
 Пропасть не должно
 Надеюсь, что с помощью
исследовательского сообщества
удастся решить проблемы и привлечь
разработчиков к использованию
ОРСУБД
Корпоративные базы данных
24 апреля 2007 г.
30
Download