Данная статья не является выражением официальной точки зрения корпорации Oracle, а представляет частное мнение автора, основанное на его опыте изучения продукта
Корпорация Oracle, наиболее известная своими серверами баз данных, в последнее время значительно расширила перечень выпускаемых продуктов, вторгаясь как в новые, еще никем не занятые экологические ниши (видео- и текст-серверы), так и в сегменты, освоенные другими производителями, - серверы для рабочих групп и средства разработки приложений клиент-сервер. К хорошо известному Forms (Developer 2000) недавно прибавился новый продукт - Oracle Power Objects (OPO).
OPO - это объектно-ориентированная визуальная среда разработки приложений клиент-сервер. Давая такое общее определение, мы, по существу, не сказали ничего, кроме того, что это не графический редактор или операционная система. Практически любой производитель систем в этом секторе рынка может подписаться под таким утверждением, поэтому придется конкретизировать каждое слово определения, подробно объясняя, что мы имеем в виду.
Сложнее всего с понятием объектной ориентированности (00). По-настоящему объектно-ориентированным языком является Smalltalk, от которого пошли две ветви - Си++ и операционные системы для Macintosh, а также небезызвестная Windows. При этом за "магическими" заклинаниями - полиморфизм, инкапсуляция и т.д. - в тени остается цель 00: приближение парадигмы программирования к реальному миру и как следствие, простота и понятность. Авторы большинства статей по ООП значительное внимание уделяют общетеоретическим вопросам и только в конце скромно замечают: "А вообще все это нужно для того-то и того-то". По сравнению с этим строгая простота идеи, разработанной Xerox для машин Macintosh и затем перешедшей в Windows, кажется слишком вызывающей для "настоящих программистов". Идея, что весь мир состоит из объектов, имеющих свойства, и методов, вызываемых при наступлении некоторых событий, доступна даже для домохозяек, Так, у телевизора есть свойство "цвет" (изначально черный), и по наступлении события - нажатия на кнопку включения - стартует метод: включить телевизор.
Следующим логичным шагом было представление объектов в графическом виде, что позволило размещать их и менять многие свойства с помощью мыши. Это и было реализовано в Visual Basic (VB). В нем интегрированы средства разработки и отладки, так что создание приложения от начала и до конца происходит без выхода из рабочей среды. Такой подход принес Visual Basic заслуженный успех во всем мире (за исключением нашей страны). Оказалось, что скорость разработки приложений на этом языке позволяет сократить время разработки в несколько раз, поэтому больше 80% небольших корпоративных приложений на Западе разработано на нем, а системы, использующие похожую технологию, стали называть визуальными средами разработки, Для этих систем в последнее время используется аббревиатура RAD (Rapid Application Development) - быстрая разработка приложений.
Идея построения корпоративных приложений по схеме клиент-сервер к 1992 - 1993 гг. овладела массами. Microsoft, выпустившая к тому времени свою базу данных Access с языком 4GL, системой запросов jet и графическим интерфейсом пользователя, объявила стандарт ODBC и стала поставлять JET вместе с VB. Однако JET не являлся до конца SQL-интерфейсом, и часто для выполнения групповых операций на клиентскую часть вытаскивалась вся таблица (порой в миллионы записей), что для Windows обычно заканчивалось появлением на экране сообщений об ошибке - GPF. Кроме того, не в полной мере поддерживались блокировки, представления (view), синонимы, последовательности и т.д. Причиной этих проблем было то, что JET никогда не разрабатывалась для работы с многопользовательскими базами данных. За счет возможностей расширения языка Visual Basic эту нишу стали заполнять независимые производители, в том числе и Oracle. Oracle Glue и его наследник, Oracle Objects for OLE, позволили, написав минимальное число строк кода, иметь доступ к серверам Oracle из VB, Word, Excel или C++.
В Visual Basic 4 была предпринята попытка улучшить работу с БД за счет введения нового интерфейса Remote Data Objects (RDO). Однако это означает, что теперь доступ к локальным и удаленным данным стал осуществляться с применением различных интерфейсов. RDO продолжает использовать механизм ODBC, а не JET, что служит косвенным подтверждением неудачности последнего. Кроме того, основная миссия RDO - это пересылка SQL-выражений на сервер для исполнения, при этом из-за различий в реализации языка SQL у разных производителей серверов БД теряется переносимость приложений. Следовательно, для "фирменного" доступа к возможностям сервера лучше использовать средства прямо от производителя БД.
В VB4 Microsoft попыталась улучшить интеграцию с базами данных, добавив инструмент Data Form Designer. Однако при этом остались проблемы с блокировкой данных на сервере, транзакциями и запросами по форме (Query By Form).
Я подробно остановился на технологии Microsoft в связи с тем, что в США Oracle Power Objects рассматривается как "убийца Visual Basic". Однако в России сложился принципиально другой расклад сил. В первую очередь это связано со структурой рынка программистов. С одной стороны, наверное, нигде в мире нет такого количества знатоков Паскаля, не обремененных высокими окладами, с другой - большая армия людей, программировавших на FoxBase, Clipper и Paradox, сегодня ищет себя в мире
клиент-серверных технологий. Не следует забывать и о продуктах конкурентов - PowerBuilder и SQLWindows. В некоторой степени Oracle конкурирует и сама с собой (Developer 2000 против Power Objects).
Как разобраться, какой продукт лучше? Во многих статьях, сравнивающих эти, да и не только эти, продукты, допускается, на мой взгляд, некорректное сравнение. Следует четко определить области применения каждого продукта, чтобы потом не упрекать, скажем, графический редактор за трудности редактирования текстов.
Рассмотрим более подробно стиль работы OPO и его функциональные возможности. Внешне это очень напоминает работу с Visual Basic. Создание приложения начинается с определения сессии с БД. Сессия является объектом и обладает своим набором свойств (таких, как строка connect) и методов. Объекты базы данных доступны через окно сессии, если она активирована. В этом окне можно создавать и редактировать не только структуру объектов базы данных, таких, как таблицы, представления (view), последовательности (sequence) и индексы, но и содержащиеся в них данные (примерно так, как редактируются данные в таблицах Excel).
Следующий шаг - создание приложения, которое понимается как контейнер, содержащий формы, отчеты и классы объектов (библиотеку готовых форм). В созданную форму можно мышью (drag’n’drop) перетащить таблицу (или некоторые ее поля), которые тут же превратятся в элементы графического интерфейса пользователя (GUI). При этом автоматически будут произведены действия, выполнение которых в других системах требует от программиста множества рутинных операций и знания технических деталей. Для этой формы будут установлены источник данных, метод доступа и несколько других параметров по умолчанию. Выбрав из палитры средств scroll bar и перенеся его мышью в форму, вы избавляете себя от необходимости создавать код, описывающий поведение объекта и его связь с БД, так как ОРО автоматически установит связь с источником данных для этой формы. Подобным способом - только с помощью мыши - можно создавать вполне работоспособные приложения, практически не прикасаясь к клавиатуре.
Следующим уровнем создания приложений является использование внутреннего языка программирования, который многим не придется изучать дополнительно, так как это стандартный Бейсик (ANSI Basic), расширенный возможностью использовать объекты (так же как в Visual Basic) и исполнять стандартный язык SQL. На этом уровне можно создавать приложения любой сложности и функциональности.
Однако есть еще одна интересная возможность: тонкая настройка индивидуального приложения на максимальную производительность. Для этого необходимо знать, как именно происходят запрос, передача и изменение данных. (Все это очень хорошо и просто описано в руководстве.) Имея доступ к структурам, отвечающим за эти вопросы, можно изменять алгоритм обращения к БД (кэширование данных, предварительная оценка объема данных, посылаемых сервером в ответ на SQL-запрос, передача данных из одной формы в другую без выполнения повторного запроса или создания копии данных). Причем описанные действия требуют минимального знания Бейсика и только общего понимания идеологии клиент-сервер.
Другим источником повышения производительности приложения может служить Blaze Database - встроенный в ОРО локальный SQL-сервер на одного пользователя и одну сессию. Обычно это база, предназначенная для создания приложений на одной машине (как альтернатива Personal Oracle), и ее могут использовать независимые разработчики для работы дома на маломощных машинах (386SX, 8 Мб ОЗУ) с последующим переносом в среду клиент-сервер без дополнительной настройки. Однако она может быть использована также для уменьшения загрузки сети (как хранилище редко изменяемых данных или индексов на локальной машине). Эту базу можно определить на диске или в оперативной памяти, что еще больше повысит производительность.
Построение приложения в парадигме клиент-сервер традиционно имеет два подхода: front-end (со стороны интерфейса) и back-end (со стороны сервера БД). Обычно фирмы, занимающиеся производством коробочных продуктов, ориентируются на интерфейсный подход (ярчайший пример - Delphi), а производители серверов БД - на серверный подход (Oracle). При этом последние рассчитывают на корпоративных пользователей, которым переносимость приложений на другие платформы, высокая производительность работы с данными, техническая поддержка и использование всех средств от одного производителя важнее удобного интерфейса разработчика и его мощных расширений, но, к сожалению, работающих только для одной операционной системы (обычно Windows). Oracle, традиционно придерживающаяся этого подхода, последнее время значительно продвинулась на пути к удобному интерфейсу, не теряя своих преимуществ мощного средства для разработки приложений со стороны БД (Developer 2000).
Одновременно идет наступление и с другой стороны - Workgroup 2000, в состав которого входит Oracle Power Objects. Таким образом, Oracle, оставляя за собой рынок приложений в интервале от больших рабочих групп (Developer 2000) до уровня больших корпораций и хранилищ данных (Designer 2000 + Developer 2000), позиционирует Oracle Power Objects для индивидуального использования и для применения в небольших рабочих группах где, в отсутствие своего основного конкурента - Visual Basic - он вполне может претендовать на обширный кусок российского рынка разработчиков, желающих создавать собственные приложения, и программистов, переходящих с FoxBase, DBase, Clipper, Clarion и Paradox на реляционные БД. Минимальные машинные ресурсы, необходимые для работы, и встроенная BlazeDatabase делают ОРО еще более привлекательным на российском рынке. Ожидаемая в начале 1996 г. версия 1.1 будет расширена навигатором объектов (подобным входящему в Forms 4.5) и мощным редактором, а включение в состав CASE фирмы Oracle (Designer 2000) генератора для ОРО расширит область применения последнего для больших проектов.
Михаил Елашкин - технический аналитик Oracle CIS. К нему можно обратиться по E-mail: melashki@oracle.ru
Михаил Елашкин