Разработка успешных приложений для Oracle
СУБД, ее очень сложно переносить на любую другую платформу. Одна из основных
особенностей, делающих язык Java привлекательным для многих разработчиков, состо-
ит в том, что программы всегда компилируются в одной и той же виртуальной среде,
виртуальной машине Java Virtual Machine (JVM), и поэтому максимально переносимы.
Именно эта особенность привлекает меня в СУБД. СУБД Oracle — это
моя
виртуальная
машина,
моя
"виртуальная операционная система".
Мой подход состоит в том, чтобы делать в СУБД все, что возможно. Если требова-
ния выходят за пределы возможностей СУБД, я реализую соответствующие функции на
языке Java вне СУБД. В этом случае особенности практически любой операционной
системы скрываются. Мне все равно надо понимать, как работают
мои
"виртуальные
машины" (Oracle или JVM) — надо знать используемые инструментальные средства, —
но наиболее эффективная реализация соответствующих функций в конкретной ОС ос-
тается прерогативой создателей этих виртуальных машин.
Таким образом, зная лишь особенности работы одной "виртуальной ОС", можно со-
здавать приложения, демонстрирующие отличную производительность и масштабируе-
мость во многих операционных системах. Я не утверждаю, что можно полностью игно-
рировать базовую ОС, — просто разработчик приложений баз данных достаточно хорошо
от нее изолирован, и ему не придется учитывать многие ее нюансы. Ваш АБД, отвеча-
ющий за поддержку СУБД Oracle, должен знать намного больше об особенностях базо-
вой ОС (если не знает — найдите нового АБД!). При разработке клиент-серверного
программного обеспечения, если основная часть кода вынесена из СУБД и виртуаль-
ной машины (наиболее популярной виртуальной машиной, вероятно, является Java
Virtual Machine), разработчику придется учитывать особенности ОС сервера.
При разработке приложений баз данных я использую очень простую мантру:
• если можно, сделай это с помощью одного оператора SQL;
• если это нельзя сделать с помощью одного оператора SQL, сделай это в PL/SQL;
• если это нельзя сделать в PL/SQL, попытайся использовать хранимую процедуру
на языке Java;
• если это нельзя сделать в Java, сделай это в виде внешней процедуры на языке С;
• если это нельзя реализовать в виде внешней процедуры на языке С, надо серьез-
но подумать, зачем это вообще делать...
В книге вы увидите применение этого подхода. Мы будем использовать язык PL/SQL
и его объектные типы для реализации того, что нельзя сделать в SQL. Язык PL/SQL су-
ществует давно, за ним стоит более тринадцати лет настройки, и нет другого языка, на-
столько тесно интегрированного с языком SQL и настолько оптимизированного для вза-
имодействия с SQL. Когда возможностей PL/SQL оказывается недостаточно, например,
при доступе к сети, отправке сообщений электронной почты и т.п., мы будем использо-
вать язык Java. Иногда мы будем решать определенные задачи с помощью языка С, но
обычно лишь в тех случаях, когда программирование на С — единственно возможный
вариант или когда обеспечиваемая компилятором С скорость работы программы дей-
ствительно необходима. Во многих случаях сейчас последняя причина отпадает при
использовании компиляции в машинные коды программ на языке Java (возможности
преобразовать байт-код Java в специфический объектный код операционной системы
Do'stlaringiz bilan baham: