Ольга Карбасова
Набор продуктов Oracle9i состоит из трех основных компонентов – Oracle9iDatabase (сервер базы данных), Oracle9iApplicationServer (сервер приложений) и Oracle9iDeveloperSuite (средства разработки). В этой статье речь пойдет о нововведениях Oracle9i Database.
Новые возможности Oracle9i Database можно с некоторой долей условности разделить на две группы – предназначенные для разработчиков приложений и для администраторов баз данных. Под разработкой будем подразумевать создание серверной части приложений.
Разработчику
Исторически сложилось, что при знакомстве с новым продуктом в первую очередь обычно интересуются тем, появились ли какие-то принципиально новые средства и технологии разработки. В Oracle8i такой «революцией» было появление на сервере языка Java как альтернативы PL/SQL. В Oracle9i настолько новых средств разработки серверной части приложений не появилось. Но и новых возможностей старых добрых Java и PL/SQL вполне достаточно, чтобы облегчить процесс создания приложений, а в некоторых случаях изменить технологию разработки.
Сначала рассмотрим новые возможности именно для разработки приложений. Но будем помнить о том, что хорошего разработчика интересуют не только средства разработки («как сделать…»), но и средства оптимизации («…чтобы хорошо работало!»). Кроме того, при установке тиражируемой системы заказчику часто выясняется, что количество пользователей значительно превышает запланированное. Поэтому важно иметь возможность масштабирования системы.
Развитие SQL главным образом движется в сторону соответствия стандартам. SQL в Oracle9i соответствует требованиям стандарта ISO SQL1999. Для удовлетворения этих требований в язык введено много новых синтаксических конструкций. Это, например, оператор CASE, перекрывающий функциональность старой доброй функции DECODE (в примерах по традиции используются всем известные таблицы Emp и Dept):
SELECT ename "Фамилия", (CASE WHEN sal<1000 THEN 'Низкая' WHEN sal>4000 THEN 'Высокая' ELSE 'Средняя' END) "Зарплата" FROM emp; |
Изменился и синтаксис соединений. Теперь и в Oracle есть понятия правого/левого/полного внешнего соединения (outer join), например, запрос
select ename, dname from emp right outer join dept on (emp.deptno=dept.deptno); |
возвращает тот же результат, что и
select ename, dname from emp, dept where emp.deptno(+)=dept.deptno; |
А вот запрос
select ename, dname from emp full outer join dept on (emp.deptno=dept.deptno); |
в старом синтаксисе аналога не имеет.
Эти в большинстве своем формально-синтаксические нововведения будут очень полезны при переносе приложений на Oracle с других СУБД. Например, разработчикам легче будет перейти, скажем, с MS SQL на Oracle.
Нововведения в PL/SQL более революционны, они носят гораздо более кардинальный характер. Приверженцам объектной технологии приятно будет узнать, что в объектных типах появилось наследование, принципы которого удовлетворяют стандарту ANSI SQL99. Наследование в Oracle9i строго иерархическое, множественное наследование не допускается. Типы-потомки наследуют у своего родителя атрибуты и методы. Естественно, потомки могут добавлять свои атрибуты и методы, а также и переопределять методы родителя. Пример типа-родителя:
CREATE TYPE Person AS OBJECT ( person_id NUMBER, date_of_birth DATE, name VARCHAR2(30), address VARCHAR2(100), MEMBER PROCEDURE Hire, -- можетпереопределяться FINAL MEMBER FUNCTION Age RETURN NUMBER -- непереопределяется ) NOT FINAL; -- может иметь подтипы |
Возможные подтипы:
CREATE TYPE Student UNDER Person (deptid NUMBER, major VARCHAR2(30)); -- добавлениеатрибутов CREATE TYPE Employee UNDER Person (empid NUMBER, mgr VARCHAR2(30)) NOT FINAL; CREATE TYPE PartTimeEmployee UNDER Employee (numhours NUMBER); |
Вводится и понятие абстрактных (not-instantiable) типов и методов. Разработчик может создавать подтипы таких типов, но не может создавать экземпляры таких типов.
PL/SQL-пакеты можно компилировать в виде разделяемых библиотек. Это устраняет накладные расходы на интерпретацию PL/SQL-кода, что может привести к ускорению выполнения в 2-10 раз. Так что теперь желающие смогут писать функции вычисления интегралов на PL/SQL, не жертвуя при этом производительностью. Конечно, если PL/SQL-программы интенсивно работают с базой данных, значительного выигрыша от компиляции PL/SQL получить не удастся.
В SQL и PL/SQL появились новые типы данных. Особенно оригинален тип AnyData. В столбце этого типа в каждой строке могут храниться данные разных типов (в одной строке – символьные, в другой – числовые, в третьей – структура из двух бинарных и трех числовых полей). Описание типа данных в поле каждой конкретной строки хранится в самом поле. Доступ к данным такого типа пока возможен только через OCI.
Менее оригинальны, но не менее полезны новые типы для даты и времени. Во-первых,
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.