Oracle для профессионалов



              

Влияние стандартов - часть 4


Теперь появляется выбор — либо не использовать хранимые процедуры, возвращающие результирующие множества, либо писать отдельный исходный код для каждой СУБД. Я, несомненно, выбрал бы метод "отдельный код для каждой СУБД" и активно использовал бы хранимые процедуры. Казалось бы, что при этом для перехода на другую СУБД потребуется больше времени. Однако оказывается, что этот подход упрощает создание приложений, переносимых на различные СУБД. Вместо поисков идеального кода SQL, работающего во всех СУБД (причем, как правило, в одних лучше, а в других — хуже), используется код SQL, максимально эффективный в конкретной СУБД. Его можно вынести из приложения, что дает дополнительные возможности настройки. Можно исправить запрос с низкой производительностью непосредственно в СУБД, и это изменение будет немедленно учтено, без исправлений в приложении. Кроме того, при использовании этого метода можно свободно и в полном объеме использовать преимущества предлагаемых производителем СУБД расширений языка SQL. Например, СУБД Oracle поддерживает иерархические запросы с помощью конструкции CONNECT BY

в операторах SQL. Эта уникальная возможность очень поможет при создании рекурсивных запросов. В Oracle вы свободно сможете использовать это расширение SQL, поскольку оно — "вне" приложения (скрыто в базе данных). В других СУБД для достижения аналогичных результатов, возможно, придется использовать временные таблицы и хранимые процедуры. Вы заплатили за эти возможности, так почему же их не использовать.

Такие же методы используют разработчики, создавая код, предназначенный для работы на множестве платформ. Корпорация Oracle, например, применяет описанную выше методику при разработке СУБД. Есть большой фрагмент кода (составляющий, однако, небольшую часть всего кода СУБД), который называется OSD-код (Operating System Dependent) и создается отдельно для каждой платформы. С помощью этого уровня абстракции в СУБД Oracle можно использовать специфические возможности ОС для обеспечения высокой производительности и интегрирования, не переписывая при этом код самой СУБД. Именно благодаря этому СУБД Oracle может работать как многопотоковое приложение в Windows и как многопроцессное — в UNIX. Механизмы межпроцессного взаимодействия абстрагированы до такого уровня, что могут воплощаться по-разному для каждой ОС; при этом обеспечивается такая же производительность, как и в приложениях, написанных специально для данной платформы.




Содержание  Назад  Вперед