Методы и подходы к разработке эффективных приложений под базы данных Oracle

Итак, в сегодняшней заметке я хочу поделиться с вами методами создания эффективных (читай, производительных) приложений под СУБД Oracle, который использует известный гуру-программист Том Кайт. Какие подходы и языки программирования лучше использовать для решения конкретных прикладных задач? Сейчас узнаем! Далее повествование от первого лица…

 Я предпочитаю подходить к решению проблем, строя решение вокруг базы данных. Если какое-то действие может быть выполнено в базе данных, то так и делается. Это обусловлено несколькими причинами. Самая главная из них заключается в том, что если функциональность встроена в базу данных, то ее можно развернуть где угодно. Мне не известна ни одна популярная и коммерчески успешная серверная операционная система, для которой программное обеспечение Oracle было бы недоступным. Начиная с Windows и заканчивая десятками систем UNIX/Linux - везде доступно одно и то же программное обеспечение Oracle и те же самые варианты. Мне часто приходится строить и тестировать решения Oracle 12с, Oracle 11g или Oracle 10g на портативном компьютере под управлением ОС UNIX/Linux либо ОС Windows, которая выполняется на виртуальной машине. Полученные решения можно затем развертывать на разнообразных серверах, на которых функционирует одно и то же программное обеспечение баз данных, но в средах разных операционных систем. Если же функциональное средство приходится реализовать вне базы данных, то окажется, что его крайне трудно развертывать везде, где хочется. Одной из основных характеристик языка Java, которая делает его настолько привлекательным, является компиляция программ в одной и той же среде виртуальной машины Java (Java Virtual Machine - JVM), обеспечивающая высокую степень их переносимости; именно эта характеристика привлекает меня в базах данных. База данных - это моя виртуальная машина и это моя операционная система.

Итак, я стараюсь все выполнять в базе данных. Если же мои требования выходят за рамки того, что может предложить среда базы данных, я строю решение на языке Java вне этой среды. В результате почти все сложности, связанные с операционной системой, остаются скрытыми. Я по-прежнему должен понимать, каким образом работают мои "виртуальные машины" (Oracle и временами JVМ) - ведь всегда нужно знать инструменты, с которыми приходится работать, - но они, в свою очередь, позаботятся о том, как лучше выполнять те или иные действия в среде заданной ОС.

Таким образом, простое знание особенностей работы одной "виртуальной ОС" позволяет строить приложения, которые будут успешно функционировать и масштабироваться под управлением многих операционных систем. Я вовсе не утверждаю, что можно находиться в полном неведении относительно используемой ОС, но как разработчик программного обеспечения, строящий приложения баз данных, вы довольно неплохо изолированы от нее и не будете иметь дела с большинством нюансов. Безусловно, администратору базы данных, отвечающему за работу программного обеспечения Oracle, придется намного больше взаимодействовать с ОС (если это не так, то поищите другого администратора). Если же вы разрабатываете клиент-серверное программное обеспечение, и большая часть кода выполняется за пределами базы данных и вне виртуальной машины (вероятно, наиболее популярной виртуальной машиной является JVM), то придется снова обращать внимание на ОС.

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

  • Все, что только возможно, должно делаться в одном операторе SQL. Верите или нет, но это возможно почти всегда. С течением времени это утверждение становится еще более справедливым. SQL - исключительно мощный язык.
  • Если что-то нельзя выполнить в одном операторе SQL, то это необходимо реализовать на языке PL/SQL с помощью как можно более краткого кода. Следуйте принципу "больше кода =       больше ошибок, меньше кода =       меньше ошибок".
  • Если задачу нельзя решить средствами PL/SQL, попробуйте воспользоваться хранимой процедурой Java. Однако после выхода Oracle9i и последующих версий потребность в этом возникает очень редко. PL/SQL является полноценным и популярным языком третьего поколения (third-generation programming language - ЗGL).
  • Если задачу не удается решить на языке Java, попробуйте написать внешнюю процедуру С. Именно такой подход применяют наиболее часто, когда нужно обеспечить высокую скорость работы приложения либо использовать API-интерфейс от независимых разработчиков, реализованный на языке С.
  • Если вы не можете решить задачу с помощью внешней процедуры С, всерьез задумайтесь над тем, если в ней необходимость.

Я использую PL/SQL и его объектные типы для решения задач, которые в SQL сделать невозможно или неэффективно. Язык PL/SQL существует уже очень долгое время - на его отработку ушло более 27 лет (к 2015 году); в действительности, возвращаясь к версии Oracle 10g, был переписан сам компилятор PL/SQL, чтобы стать в первую очередь оптимизирующим компилятором. Никакой другой язык не связан настолько тесно с SQL и не является до такой степени оптимизированным для взаимодействия с SQL. Работа с SQL в среде PL/SQL происходит совершенно естественным образом, в то время как в любом другом языке, от Visual Basic до Java, применение SQL может оказаться довольно-таки обременительным. PL/SQL никогда не выглядел достаточно "естественным", поскольку он не является расширением какого-то языка. Когда возможности PL/SQL исчерпаются, что в текущих выпусках базы данных случается очень редко, мы будем использовать Java. Иногда мы будем прибегать к языку С, но, как правило, только когда С является единственным выбором или когда требуется максимальная скорость, обеспечиваемая С. Часто последняя причина уходит на второй план благодаря низкоуровневой компиляции Java - возможности преобразования байт-кода Java в специфический для операционной системы объектный код платформы. Во многих случаях это позволяет коду Java работать почти так же быстро, как код С.

 

Вас заинтересует / Intresting for you:

Сопровождение объектных типов ...
Сопровождение объектных типов ... 1938 просмотров Максим Николенко Sun, 03 Nov 2019, 09:18:04
Oracle и Java: использование P...
Oracle и Java: использование P... 3900 просмотров sepia Tue, 08 May 2018, 08:52:34
Oracle IDE: JDeveloper, SQL De...
Oracle IDE: JDeveloper, SQL De... 3227 просмотров Ольга Потемкина Tue, 21 Nov 2017, 13:18:46
Oracle Text и PL/SQL: многоязы...
Oracle Text и PL/SQL: многоязы... 1298 просмотров Максим Николенко Fri, 18 Oct 2019, 12:41:03
Войдите чтобы комментировать