Файл: Базы данных - уч. пособие.pdf

Добавлен: 28.11.2018

Просмотров: 9962

Скачиваний: 41

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

7.3 СУБД третьего поколения и объектно-ориентированные СУБД

151

Следует отметить, что для извлечения значения атрибута объекта внутри таб-

лицы необходимо использовать псевдоним и точечную нотацию (пример 7.2).

При создании объектной таблицы создается столбец с идентификатором объ-

екта (OID или REF) для экземпляра объекта (строки), что отличается от создания
реляционной таблицы с объектным типом в качестве столбца, поскольку в таком
случае объектный тип не имеет OID-идентификтора. Объектный тип может иметь
методы MEMBER — это подпрограмма, которая оперирует данными, т. е. атрибу-
тами внутри любого объектного типа. Метод является процедурой или функцией
языка PL/SQL.

Для каждого метода необходимо создать интерфейс (или спецификацию) и внут-

реннюю реализацию (тело метода). Для доступа к методу используется нотация
с точкой типа object.method. В следующем примере создается метод некоторого
объектного типа со спецификацией и телом, а также фрагмент кода PL/SQL с вы-
зовом этого метода.

. . . . . . . . . . . . . . . . . . . . . .

Пример 7.4

. . . . . . . . . . . . . . . . . . . . .

CREATE type auto_type as object (
Vin varchar2 (80),
Make varchar2 (30),
Model varchar2 (40),
member function getcost
return number,
pragma restrict_references
(getcost, WPNS));
/* статус WPNS — Writes No Package State — означает, что функция не может

изменять никакие внутренние параметры. */

create type body auto_type (
member function getcost
return number is
begin
return (cost); /*виртуальная функция вычисления стоимости автомобиля*/
end;);
/*необходимо создать таблицу auto */
declare

a auto_type;
c number;
begin
select value (a)
into a
from auto a
where a.vin=122;
c:=a.getcost();

end;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


background image

152

Глава 7. Системы управления базами данных

Коллекции (массивы VARRAY и вложенные таблицы)

Коллекцией называется упорядоченная или неупорядоченная группа элемен-

тов. В Oracle 8 существует два таких типа: массив VARRAY является упорядочен-
ной коллекцией, а вложенная таблица TABLE — неупорядоченной. Вложенная таб-
лица TABLE входит в стандарт ANSI. Пояснить различия VARRAY и TABLE мож-
но на простом примере отношения «один-ко-многим»: основные сведения — под-
чиненные сведения. Для списка размещенных по порядку предметов используется
коллекция VARRAY, а для группы подчиненных сведений для каждого основного
предмета можно использовать вложенную коллекцию TABLE внутри коллекции
VARRAY. Вложенная таблица является определяемым пользователем типом, или
типом TABLE, который может применяться внутри таблицы как столбец, а внутри
объектного типа — как атрибут или переменная PL/SQL.

Вложенные таблицы сохраняются вне основной таблицы в так называемой таб-

лице хранения (storage table). Массив VARRAY содержит счетчик (count), опре-
деляющий количество элементов, которые находятся в настоящее время в мас-
сиве, и предел (limit) — максимальное количество элементов, которое может со-
держать массив. Коллекция VARRAY аналогична структуре данных типа массив,
а TABLE — таблице.

Поддержка OLAP

Разработчики Oracle, понимая, что реляционная модель удобна для представ-

ления данных в информационно-управляющих системах, убеждены, что для ана-
литических систем более подходит многомерная модель, где данные представлены
в виде многомерных кубов, которые можно легко вращать, получать срезы, аг-
регировать информацию и т. д. Для создания OLAP-приложений в Oracle ранее
использовался программный продукт Express Server — СУБД с многомерной моделью.

Данные из оперативных реляционных систем приходилось перегружать или

подкачивать в Express Server, который не обеспечивал такого же уровня надежно-
сти, масштабирования, защиты, как реляционный сервер Oracle. Поэтому в вер-
сию 9i интегрирована возможность и функциональность Express Server. Сервер
Oracle 9i поддерживает и многомерную модель данных, что позволяет пользовате-
лю проектировать многомерные кубы и решать, как они будут храниться в Orac-
le 9i — в реляционных таблицах или в так называемых аналитических простран-
ствах (LOB-поля). Обеспечивается возможность переноса данных из базы Express
Server в Oracle 9i.

Реализован весь набор функций, ранее присущий Express, причем разработчи-

кам Oracle удалось добиться того, что скорость выполнения этих функций была не
ниже, чем в Express Server. Кроме того, метаданные и данные хранятся в единой
базе данных Oracle, а для работы с многомерными кубами используются JavaBeans,
входящие в состав инструментария.

Поддержка XML в Oracle

Сервер Oracle поддерживает не только реляционную, объектную, многомер-

ную модели данных, но и XML (eXtensible Markup Language — расширяемый язык
разметки). Начиная с версии 9i большие объемы XML-данных можно было поме-
стить в виде XML-файлов в LOB-полях как единый кусок текста. Иначе содер-
жимое XML-файла разбиралось и «разбрасывалось» по реляционным таблицам,
а при запросе вновь собиралось в файл.


background image

7.3 СУБД третьего поколения и объектно-ориентированные СУБД

153

В БД Oracle в настоящее время поддерживаются XML-схемы и можно хранить

XML-данные еще и в виде собственно XML-объектов: таблиц с типом XMLType
и колонок типа XMLType. В новой версии реляционные и XML-данные сосуще-
ствуют в одной универсальной модели. С XML-данными можно работать посред-
ством языков SQL и Java, а с реляционными — через XML-интерфейсы, например
через XPath. Поскольку из SQL можно работать с XML-данными и их частями, то
теперь легко построить, например, обычный индекс по реквизиту, содержащемуся
в XML-файлах, и быстро найти нужные файлы.

Можно построить реляционное представление (View), колонками которого бу-

дут реквизиты XML-файлов, и далее работать с этим представлением обычны-
ми «реляционными» средствами. Предположим, что в некотором приложении за-
прос на товары приходит от заказчика в виде сообщений, содержащих XML-текст.
Можно написать запрос, одновременно работающий с реляционными данными,
очередями сообщений, XML-данными, пространственными данными, контекстом.
И наоборот, создав над реляционными или объектными таблицами базы данных
представление XMLType View, можно работать с этими данными через XML-
интерфейс. В Oracle поддерживаются стандарты доступа SQLX, Xpath, DOM, Java-
Beans и JNDI.

СУБД Oracle обеспечивает возможность оперировать с XML-документами так

же, как и с реляционными данными. Подсистема, названная Oracle XML DB, вошла
в состав второго релиза Oracle 9i. Oracle XML DB дает пользователям возможность
наряду с реляционными данными применять XML-документы, не преобразуя их
в строки и колонки. XML-документы хранятся как объекты Oracle.

Объектные представления
Объектные представления реляционных таблиц в Oracle позволяют разработ-

чикам и пользователям применять такие преимущества, как соединение объектно-
ориентированных пользовательских приложений и реляционных хранилищ дан-
ных, согласование нескольких объектно-ориентированных пользовательских схем
с одной реляционной основной моделью, а также параллельную разработку но-
вых объектно-ориентированных и текущих реляционных приложений. Последнее
означает, что объектные представления упрощают процесс миграции к объектно-
ориентированным технологиям. При этом пользователь может работать со всей
системой так, как если бы она была объектно-ориентированной, хотя на самом
деле данные являются реляционными.

Общий порядок реализации объектного представления состоит из создания

следующих объектов:

• таблиц;

• объектных типов;

• объектных представлений;

• триггеров INSTEAD OF.

Назначение триггера INSTEAD OF позволяет вставлять, обновлять и удалять

данные реляционных таблиц, на которых основано объектное представление, вме-
сто непосредственной модификации объектного представления, которую осуще-
ствить невозможно.


background image

154

Глава 7. Системы управления базами данных

. . . . . . . . . . . . . . . . . . . . . .

Пример 7.5

. . . . . . . . . . . . . . . . . . . . .

CREATE table depts(

deptid number,
deptbudget number);

CREATE table branches(

branchid number,
branchbudget number,
deptid number);

CREATE type funding_type as object(

deptid number,
deptbudget number,
branchid number,
branchbudget number);

CREATE OR REPLACE view funding_objv as

SELECT funding_type
(deptid, deptbudget, branchid, branchbudget) funding
FROM depts d, branches b
WHERE d.deptid=b.deptid;

CREATE OR REPLACE trigger funding_trig INSTEAD OF

INSERT ON funding_objv for each row
Begin
Insert into depts values

(:new.funding.deptid, :new.funding.deptbudget);
Insert into branches values
(:new.funding.branchid, :new.funding.branchbudget,
:new.funding.deptid);

end;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Объектные представления похожи на традиционные представления в реляци-

онных БД, но в них могут использоваться строгая типизация, сложные структуры
(не в первой нормальной форме), методы и возможности ссылок на существующие
реляционные данные.

В заключение хотелось бы отметить, что объектно-ориентированные СУБД,

имеющие связь с классическими реляционными моделями данных, имеют хорошие
перспективы для развития, обусловленные совершенствованием технологий связи,
быстрым развитием Internet, постоянным ростом используемых объемов данных.
Возможность гибкой настройки схемы данных, а также способность хранить боль-
шое количество объектов делают оправданным применение ООСУБД и гибридных
СУБД на крупных предприятиях.

Также заметим, что с каждой новой версией разработчики Oracle вносят все

новые и новые объектно-ориентированные возможности и совершенствуют уже
существующие.


background image

7.3 СУБД третьего поколения и объектно-ориентированные СУБД

155

7.3.4 СУБД Cach ´e

СУБД Oracle смело можно отнести к классу гибридных объектно-реляционных

СУБД, поскольку здесь успешно сочетаются реляционный и объектно-ориентиро-
ванный подход. В этом разделе мы познакомимся с СУБД принципиально нового
постреляционного класса. При написании данного раздела были использованы ма-
териалы, опубликованные в [25, 26].

При всех достоинствах современной объектной технологии разработки БД

имеется несколько препятствий, которые удерживают разработчиков от принятия
решения о переходе с реляционной технологии на объектную. Основным останав-
ливающим фактором является значительный объем разработок, опирающихся на
реляционные СУБД, поскольку при переходе на объектную технологию необходи-
мо перестраивать не только модель предметной области, но и полностью перепи-
сывать все пользовательские приложения, и поэтому возникает вопрос целесооб-
разности такого перехода.

СУБД Cach´e компании InterSystems обеспечивает не только реализацию ос-

новных возможностей объектно-ориентированной технологии, но и позволяет во
многом облегчить переход с реляционной технологии на объектную, а также может
выступать в роле шлюза к реляционным базам данных.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Отличительной особенностью СУБД Cach´e является независи-
мость хранения данных от способа их представления, что реали-
зуется с помощью так называемой единой архитектуры данных
Cach´e.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

В рамках данной архитектуры существует единое описание объектов и таб-

лиц, отображаемых непосредственно в многомерные структуры ядра БД, ориен-
тированного на обработку транзакций. Как только определяется класс объектов,
Cach´e автоматически генерирует реляционное представление данных этого клас-
са. Подобным же образом, как только в словарь данных поступает DDL-описание
на языке SQL, Cach´e автоматически генерирует реляционное и объектное описа-
ние данных. При этом все описания ведутся согласованно, но все операции по
редактированию проводятся только с одним описанием данных. Это позволяет со-
кратить время разработки, одновременно улучшается совместимость со старыми
SQL-ориентированными приложениями.

На рынке высокопроизводительных СУБД Cach´e позиционируется как eDBMS,

т. е. как СУБД, ориентированная на работу в сетях Internet/Intranet. Поэтому при
установке проверяется наличие web-сервера и производится автоматическое кон-
фигурирование подсистемы. В версии Cach´e 4.0. реализована технология создания
динамических web-приложений CSP (Cach´e Server Pages). Наряду с этим систем-
ная библиотека Net предоставляет классы, реализующие протоколы SMTP, POP3,
HTTP, FTP и др. На рисунке 7.7 представлена архитектура СУБД Cach´e.