Oracle и обработка данных в среде клиент/сервер

 

Oracle Corporation стала лидером во внедрении усовершенствованных технологий баз данных клиент/сервер и предлагает средства проектирования, разработки и администрирования БД. Программные продукты Oracle охватывают все основные компоненты архитектуры клиент/сервер:

■ полнофункциональный высокопроизводительный сервер RDBMS, масштабируемый от портативных ЭВМ до мэйнфреймов;

■ средства для разработки и запуска клиентских приложений, поддерживающие несколько сред GUI;

■ программный компонент для организации связи между БД на различных ЭВМ, который обеспечивает эффективную и безопасную связь с помощью широкого набора сетевых протоколов.

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

 

 

Глава 5. Сервер СУБД Oracle

 

Oracle Server - полнофункциональная RDBMS, которая идеально подходит для сложных сред клиент/сервер. Особенности внутренней архитектуры Oracle ориентированы на обеспечение готовности, максимальной пропускной способности, безопасности и эффективного использования ресурсов компьютеров. Oracle также присущи черты, связанные с используемым языком программирования, которые способствуют ускорению разработки и улучшению эффективности серверной части приложений:

- Язык PL/SQL. Главный компонент Oracle Server - его процессор PL/SQL. (PL — Procedural Language - процедурный-язык.) PL/SQL - язык Oracle четвертого поколения, объединяющий структурированные элементы процедурного языка программирования с языком SQL. PL/SQL разработан специально для организации вычислений в среде клиент/сервер. Он позволяет передать на сервер программный блок PL/SQL, содержащий логику приложения, как оператор SQL, одним запросом. Используя PL/SQL, можно значительно уменьшить объем обработки в клиентской части приложения и нагрузку на сеть. Например, может понадобиться выполнить различные наборы операторов SQL в зависимости от результата некоторого запроса. Запрос, последующие операторы SQL и операторы условного управления могут быть включены в один блок PL/SQL и пересланы серверу за одно обращение к сети.

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

- Хранимые процедуры. Версия 6 Oracle поддерживала работу PL/SQL на сервере. Oracle 7 позволяет, хранить блоки PL/SQL как объекты базы данных в форме хранимых процедур, функций и пакетов. Часть логики приложения, особенно нуждающаяся в доступе к базе данных, может храниться там, где она обрабатывается (на сервере). Использование хранимых процедур значительно увеличивает эффективность системы клиент/сервер по нескольким причинам:

а) вызов хранимой процедурой из приложения-клиента порождает минимальный сетевой трафик. Приложению не нужно передавать весь программный блок PL/SQL от клиента к серверу; требуется единственный вызов процедуры или функции со списком параметров;

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

Эта возможность обычно используется, чтобы уменьшить объем администрирования привилегиями, которое должен выполнить DBA.

в) откомпилированные хранимые процедуры и их исходные тексты содержатся в базе данных. Так как откомпилированная процедура готова к исполнению, потребность в разборе и компиляции, блоков PL/SQL на этапе выполнения сводится к минимуму.

- Триггеры базы данных. Похожи на хранимые процедуры тем, что они являются блоками PL/SQL, резидентными в базе данных; различие между ними в том, что триггеры запускаются автоматически ядром RDBMS в ответ на события, образующие транзакцию (такие как операции вставки, модификации или удаления). Можно использовать триггеры, чтобы организовать сложный контроль целостности, выполнять протоколирование (аудит) и другие функции безопасности, реализовать в приложениях выдачу предупреждений и мониторинг. Подобно хранимым процедурам, триггеры базы данных значительно уменьшают объем кода и обработки, необходимых для клиентской части приложения.

Реализация триггеров базы данных Огас1е несколько отличается от принятой у других разработчиков. В большинстве баз данных триггеры поддерживаются на уровне всего оператора языка SQL. Огас1е также предоставляет функциональную возможность запуска триггеров на уровне, одной строки таблицы. Рассмотрим оператор UPDATE, который обновляет значения в наборе из 100 строк. Ядро запустило бы на выполнение триггер уровня оператора лишь однажды для всего оператора (до и/или после того, как оператор выполняется). Триггер уровня строки, с другой стороны, запускается ядром для каждой строки, на которую воздействует оператор — 100 раз. Oracle позволяет применять триггеры уровня оператора и уровня строки совместно.

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

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

- Функции, определяемые пользователем. Блоки PL/SQL также применяются в функциях, определяемых пользователем. Такие функции подобны хранимым процедурам и также уменьшают объем кода клиентской части приложения. Эти функции можно не только вызывать из PL/SQL, но и расширять ними стандартный набор функций Oracle SQL.

Проектирование приложения Oracle с использованием возможностей сервера повышает эффективность системы клиент/сервер и упрощает саму задачу разработки и развертывания приложения.

 

 

Глава 6. Сетевое программное обеспечение

 

В системе клиент/сервер на основе Oracle для обеспечения связи между узлами сети, вероятно, будут использоваться программные средства Oracle. Ряд программных продуктов и инструментальных средств упрощают задачу подключения приложений-клиентов к серверам баз данных через сеть.

■ SQL*Net. Программное обеспечение, которое выполняет оптимальную, надежную передачу сообщений базы данных в сети, использующей любые популярные сетевые протоколы. SQL*Net предназначено для обеспечения прозрачности расположения сервера в сети и использует компоненты, которые расположены как на клиенте, так и на сервере приложения.

В дополнение к обеспечению соединений между рабочими станциями и серверами в среде клиент/ сервер, SQL*Net также используется для поддержания связи между серверами при обработке распределенных транзакций, удаленных вызовах процедур и тиражировании (репликации) таблиц. Серверы обращаются к другим серверам, используя механизм "связи баз данных" (database link), определяющий имена удаленных баз данных, узлы сети, через которые эти базы данных обслуживаются, и сетевой протокол, применяемый для обращения к удаленным узлам. Механизм связи баз данных упрощает распределенную обработку, обеспечивая прозрачный доступ к удаленным объектам, таким как таблицы и процедуры, позволяя приложениям обращаться к ним точно так же, как если бы они находились в локальной базе данных приложения.

■ Oracle Names. С выпуском версии 7.1 Огас1е появилась возможность делать доступной во всей сети информацию о связях баз данных и об узлах сети, используя общий глобальный словарь Oracle Names. Эта возможность особенно эффективна для больших сетей из многих узлов.

■ Multi-Protocol Interchange. В то время как SQL*Net версии 1 обеспечивает соединения между узлами; с одним сетевым протоколом, SQL*Net версии 2 позволяет связать базы данных, находящиеся в узлах разных сетей, работающих с различающимися сетевыми протоколами. Multi-Protocol Interchange (MPI) обеспечивает связь, транслируя сообщения SQL*Net из одного протокола в другой. Например, автоматизированное рабочее место клиента в ЛВС с Token-Ring может "прозрачно" обратиться к серверу в сети DECnet или TCP/IP, изолируя приложение от сложностей поддерживающей его сетевой инфраструктуры. Кроме мультипротокольной коммуникации, MPI выполняет маршрутизацию сообщений по критерию наименьших издержек и использует альтернативные маршруты, когда оптимальные пути в сети недоступны.

■ Oracle Network Manager. Сложная задача конфигурирования и управления топологией сети распределенной базы данных упрощается с Network Manager, средством администрирования SQL*Net с графическим интерфейсом. Network Manager используется не только для управления словарем Oracle Names, но также для генерирования файлов конфигурации клиентских и серверных компонентов SQL*Net, и описания маршрутов соединения узлов для Multi-Protocol Interchange.

 

Глава 7. Инструменты разработки систем клиент/сервер

 

Кроме сервера СУБД и сетевого ПО, Oracle предлагает ряд продуктов с графическим интерфейсом для разработки клиента, что логически завершает его интегрированную архитектуру клиент/сервер. Эти комплекты программных продуктов включают полнофункциональные инструментальные средства автоматизированн6го проектирования программного обеспечения (Computer Assisted Software Engineering — CASE), объектно-ориентированные среды разработки и компоненты времени выполнения, которые, могут работать c_Огас1е Server, а также с другими базами данных SQL.

1) Designer/2000. Для разработки сложных приложений среда CASE Designer/2000 предоставляет репозитарий (repository — хранилище) и мощный набор инструментальных средств, который позволяет выполнять анализ, моделирование, проектирование и генерацию как клиентских, так и серверных компонентов приложения.

Designer/2000 — сложный инструмент с широкими возможностями. Если его освоить, то задача разработки сложного приложения решается быстрее и намного эффективнее, чем с использованием традиционных методов разработки. Информация, собираемая с помощью графических диаграмм, моделирующих данные и приложение, используется для генерирования сложных, свободных от ошибок определений данных и приложений. Designer/2000 генерирует полнофункциональное приложение для инструментальных средств Developer/2000, содержащее меню, средства обеспечения безопасности и управления транзакциями, возможности использования OLE-контейнеров. Генераторы приложений разработаны для Visual Basic и Power Objects.

2) Developer/2000. Пакет Developer/2000 организует Oracle Forms, Oracle Reports, Oracle Graphics и Oracle Book в единую интегрированную среду разработки. Можно создать приложение, используя только эти инструментальные средства, или применять их вместе с Designer/2000, чтобы автоматически генерировать формы и отчеты.

Инструментальные средства Developer/2000 используют PL/SQL в качестве языка написания программ. Приложения, разработанные на одном программно-аппаратном типе платформы, могут работать на других платформах (Microsoft Windows, Macintosh и Motif).

3) Power Objects. В дополнение к Designer/2000 и инструментальным средствам Developer/2000, комплект программных продуктов Oracle включает другую объектно-ориентированную среду разработки приложений Power Objects, который предоставляет среду быстрой разработки приложений с большим количеством элементов технологии перетаскивания (drag-and-drop) и автоматическим управлением транзакциями.

 

Глава 8. Развитие Oracle

 

Oracle Corporation продолжает оставаться лидером, внедряющим новые технологии, которые обеспечивают расширенные функциональные возможности и лучшие средства для управления, разработок, коммуникаций и производительности масштабируемых систем баз данных клиент/сервер. Вот некоторые из этих технологии:

1) Беспроводные системы клиент/сервер. Oracle представила средства связи и передачи сообщений, которые поддерживают удаленный доступ в системах клиент/сервер. Эта технология, которая работает в сотовых сетях передачи данных, особенно полезна пользователям портативных ЭВМ. В продукте Oracle Mobile Agents реализована архитектура "клиент-агент-сервер", которая позволяет клиенту работать автономно и периодически соединяться через сеть, чтобы посылать запросы и получать результаты от сервера. Компонент "агент" этой архитектуры функционирует в сети от имени клиента в его отсутствие.

2) Интерфейс Internet/World Wide Web. Oracle Web Interface Kit предназначен для интеграции серверов World Wide Web с базами данных Огас1е. В состав ПО входят утилиты для создания Web-страниц и связывания с ними данных Огас1е, обеспечивая для пользователей Web-возможность помещения данные в БД Oracle, а также их выбора.

3) Multimedia Server. По мере того как в приложениях используются все более разнообразные типы данных, особенно мультимедиа-данные, технологии сервера базы данных также соответствующим образом развиваются. Эта быстродействующая технология высокопроизводительного сервера поставляет "видео по запросу" потребителям.

 

 

Глава 9. Общий обзор архитектуры Oracle

 

Сведения об архитектуре Oracle, относятся ко всем платформам, на которых работает Oracle. Отличия в платформах обусловливают отличия в архитектуре, но основа всюду одна.

Что такое база данных?

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

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

Физически база данных Oracle — не более чем набор файлов где-то на диске. Расположение этих файлов несущественно для функционирования (хотя важно для производительности) базы данных. Это двоичные файлы, к которым обращаются только через программное обеспечение ядра Oracle. Запрос данных из файлов БД обычно выполняется одним из инструментальных средств Oracle (таких как SQL*Plus), использующих структурированный язык запросов (SQL).

Логически база данных — это множество пользовательских разделов Oracle, каждый из которых идентифицируется именем пользователя (с паролем), уникальным в данной БД. Таблицы и другие объекты принадлежат некоторому пользователю Oracle. Доступ к СУБД возможен только после регистрации посредством ввода имени и пароля пользователя. Если введенные имя и пароль не проходят проверку на соответствие, доступ к БД не предоставляется. Имя и пароль пользователя СУБД Oracle отличаются от имени и пароля пользователя операционной системы. Например, если база данных работает Ha UNIX машине, то необходимо сначала зарегистрироваться в UNIX, используя имя и пароль для операционной системы UNIX, а затем зарегистрироваться в Oracle и лишь тогда можно "увидеть" объекты базы данных. (Регистрация в UNIX может не требоваться при соответствующей настройке системы клиент/сервер.). Эта процедура регистрации, или подключения к БД, выполняется всегда независимо от того, используются для доступа к серверу-СУБД инструментальные средства Oracle или других изготовителей. Таблицы с одинаковыми именами могут существовать в двух разных учетных разделах Oracle; хотя имя у них одно, это — разные таблицы. Иногда одну БД (один набор физических файлов базы данных) используют для хранения различных версий таблиц (в отдельных учетных разделах Oracle) для разработчиков, тестирования системы или обучения пользователя; иногда одно имя таблицы используется в различных прикладных системах.

Часто учетный раздел пользователя Oracle называют базой данных, но это не совсем правильно. Можно, например, создать два учетных раздела Oracle, чтобы хранить данные для двух совершенно различных прикладных систем; получились бы две логические базы данных, реализованные в одной физической базе данных.