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

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