Путь камикадзе в среде OracleИсточник: dsvolk Дмитрий Волков
Автор: © Дмитрий Волков ВведениеВ данной статье я сделал краткий обзор проблем, с которыми сталкиваются разработчики, создающие проекты в среде Oracle. Коротко рассматриваются особенности ведения проектов и подбора команды разработчиков. Делается краткий обзор средств проектирования и разработки приложений, проводится их сравнительный анализ. Приводятся наиболее типичные допускаемые ошибки при проектировании БД и разработке приложений. Выбор БД и ОСВыбор БД часто оказывается камнем преткновения в начале проекта. Если выбор ОС часто диктуется аппаратным обеспечением, которое или уже есть, или на которое есть деньги, то выбор БД порождает споров не меньше, чем какой автомобиль лучше. В чем же здесь дело? Наверно в том, что в начале проекта мы слабо представляем себе все задачи, которые нам предстоит решать. Что может помочь в выборе БД? Я бы расставил приоритеты так:
Итак. Внимательно посмотрите, что говорят разработчики, и что они умеют. Не заставляйте прыгать их выше своей головы. Помните, что Oracle это сложный продукт. Документация только на БД включает в себя около 20,000 страниц!. Я помню что, когда я впервые увидел документацию на Oracle, она стояла в комнате разработчиков, занимая целую стену! Казалось невероятным прочитать все это даже за всю жизнь! Но если Вам удалось настоять на выборе Oracle и Unix - поздравляю Вас. Ваш путь камикадзе начался! Организация проектаПроектОрганизуя проект, Вы должны очень хорошо представлять себе сроки проекта, его бюджет и команду, которая призвана реализовать этот проект. И если обсуждение сроков и бюджета выходит за рамки данной статьи, то принципы подбора важнейших членов Вашей команды мы обязательно рассмотрим дальше. Что касается собственно проекта, то требуйте от него только одного - чтобы он был закончен. Ничего не угнетает морально больше чем прекращенный проект. КомандаСамым важным звеном команды, несомненно, является ее лидер - project manager. Именно от него зависит, будет ли успешным проект. Его важнейшими качествами являются возможность противостоять внешнему давлению вышестоящего руководства, умение противостоять внешнему давлению. Но не менее важным является и его технический background. Он должен быстро, в разговоре с руководством успеть просчитать сколько времени уйдет на реализацию той или иной фичи системы. С другой стороны, поскольку он видит всю картину целиком, он должен подсказывать другому члену команды - DBA - что из возможностей БД следует использовать в той или иной части проекта.
Как правило, степень близости лидера проекта к пониманию проблем разработки прямо пропорциональна моральному климату в коллективе. Другим важным членом команды является DBA - Database Administrator. Он гуру. Его уважают и слушают. Когда у разработчика что-то не выходит, он бежит к dba и внимательно слушает его указания. Он должен внимательно проверять все предлагаемые технические решения, выносить свой вердикт - использовать их или нет. От его работы зависит, насколько безболезненно система войдет в строй, и будет эксплуатироваться. Важно, чтобы такой администратор был в вашей команде с самого начала проекта. В конце я бы отметил "закон бутерброда" для проектов. Итак, вы грамотно ведете проект. Ваша команда хорошо информирована и тренирована. Структура БД ясна и понятна. Система отлично выглядит и эффективно работает. Но не беспокойтесь. Всегда найдутся дополнительные фичи или параллельный проект который разрушит вашу безмятежную жизнь (Jonathan Lewis) Средства проектированияИспользование case-средств при проектировании современных систем уже перестало казаться ненужным излишеством. И тем не менее все еще успешно игнорируется многими командами. Мне приходилось много раз видеть и слышать мнение, что написать скрипты вручную гораздо быстрее и легче. Это преступное заблуждение. Во-первых, такой проект невозможно кому-либо продемонстрировать. Как следствие, затруднено добавление членов команды. Во-вторых, через год, полгода написание связанных запросов начинает занимать все больше и больше времени. Никто уже не ориентируется в структуре БД. Вот как я определяю, насколько хорошо ведется проектирование. Если в комнате разработчиков есть доска, а на стенах весят ER- диаграммы, то по крайне мере разработчики обсуждают, что они делают. У меня в комнате сейчас есть и доска и диаграммы J. Какое средство проектирование использовать ? То, которое Вы знаете … Я же крайне рекомендую использовать Oracle Designer. Это прекрасное средство, проверенное в огромном количестве проектов, обладающие всеми Вам необходимыми свойствами. К тому же Designer может выполнить генерацию программного кода, который вы далее сможете полностью или частично использовать дальше. Так, в проекте связанном с созданием web интерфейсов на perl и php я использовал не только генерацию собственно схемы данных, но и так называемого table API - процедурного интерфейса для обращения к данным. Это крайне удобно и экономит массу времени. Средства разработкиWindows средства (Delphi, Power Builder, Visual C++)К достоинствам этих средств разработки стоит отнести
К недостаткам
Высокая гибкость этих средств позволяет разработчику совершить и массу ошибок. Так, внезапно может оказаться, что при просмотре в grid таблицы из пары миллионов строк возможность передвинуть ползунок приводит к тому, что приложение полностью зависает. Также очень часто разработчики увлекаются универсальными формами, которые умеют "все". При этом они пытаются генерить sql код "на ходу". По этому поводу лучше смотреть главу "Список основных ошибок". Perl/PhpБесплатно распространяемы средства разработки, имеющие миллионы разработчиков по всему миру. Интерфейсы к БД Oracle написаны волонтерами, и достаточно производительны. Правда, как правило, они поддерживают не все возможности сервера (вернуть коллекцию или объект). Тем не менее, для создания web интерфейсов эти средства широко и успешно используются. Здесь по моему опыту разработчики стараются удержаться в рамках одного выбранного языка и напрочь отрицают использование хранимых процедур сервера. По этому поводу лучше смотреть главу "Список основных ошибок". Стоимостью наибольшей гибкости является время разработки - наибольшее среди обозреваемых средств. Это связано с отсутвием каких либо графических средств разработки для этих языков. JavaOracle давно и последовательно поддерживает java. Виртуальная машина уже находится в БД - вы можете создавать хранимые процедуры на java. Для создания клиентских приложений Oracle предлагает свой продукт JDeveloper. Драйвера для доступа к БД разрабатываются самим Oracle и поддерживают почти все возможности сервера. Технология jsp позволяет Вам создавать облегченный вариант вашего интерфейса. Так что если вы готовые на дополнительные накладные расходы на CPU и скорость исполнения не является для Вас критической, эта технология кажется одной из наиболее привлекательных. Oracle средства (Forms, Reports)Это наиболее старые средства разработки клиентских приложений предлагаемых корпорацией Oracle. Они представляют собой законченное решение для разработки приложения для доступа к данным. Честно говоря, я до сих пор уверен, что наиболее производительно создавать большие приложения именно на Oracle Forms. К сожалению, внешний вид приложений получающихся с помощью forms- reports оставляет желать лучшего. К тому же они как правило требовательны к памяти. Что и заставляет многих разработчиков выбирать другие средства для своих проектов. А очень жаль! Соотношение качество приложения/скорость у Forms очень - очень хорошее! Oracle средства (Portal - WebDB)Проект WebDb был изначально написан Tom Kyte как замена тяжелому и неуклюжему Oracle Web Server и позже был включен в состав Oracle Internet Application Server как модуль mod_plsql. В дополнение к возможности писать web формы на языке pl/sql, Portal добавил огромное кол-во возможностей -
Как и в случае Oracle Forms этот продукт позволяет быстро создавать грамотные приложения, но не всегда позволяет изменить внешний вид своего приложения. По сравнению с Oracle Forms, этот продукт легче осваивается, проще в эксплуатации. Плата за это - ограниченная функциональность. Контроль версийЭто обязательный элемент любого проекта. Тут даже обсуждать нечего. Требуется только разработать схему создания новых версий продукта, способы расстановки тегов. Также требуется разработать процедуру установки новых версий у клиентов. Какой продукт использовать? Я использовал при разработке на Unix платформах - связку Emacs - CVS, в Windows - PVCS. К сожалению последний является коммерческим программным обеспечением. На данный момент Oracle позиционирует свой продукт Oracle SCM - Software Configuration Manager как средство работы с версиями, но я еще его не использовал. Безопасностность и надежностьНаиболее часто конечно на практике встречаются случаи, когда экземпляр (instance) Oracle находиться в корпоративной сети, за firewall. Поэтому относительно немного известно атак на собсвенно сервер через интренет. Тем не менее, к наиболее распростаненным можно отнести
Список наиболее вопиющих ошибок можно прочитать по адресу http://www.nextgenss.com/papers/hpoas.pdf. Не пугайтесь сразу - эти ошибки известны Oracle и они уже закрыты патчами. С другой стороны, с ростом приложения, объемов, используемых опций сервера, возникают и непредвиденные ошибки Oracle, знаменитые ora-600. С ними приходится бороться, определять возможные пути решения, иногда не тривиального. Хороший администратор пытается не допустить возникновения таких ошибок, регулярно просматривая появляющиеся патчи и внимательно читая исправленные ошибки. Список основных программных ошибок совершаемых при разработке
|