CONNECT
BY в опера-
торах SQL. Эта уникальная возможность очень поможет при создании рекурсивных зап-
росов. В Oracle вы свободно сможете использовать это расширение SQL, поскольку оно —
"вне" приложения (скрыто в базе данных). В других СУБД для достижения аналогич-
ных результатов, возможно, придется использовать временные таблицы и хранимые
процедуры. Вы заплатили за эти возможности, так почему же их не использовать.
Такие же методы используют разработчики, создавая код, предназначенный для ра-
боты на множестве платформ. Корпорация Oracle, например, применяет описанную выше
методику при разработке СУБД. Есть большой фрагмент кода (составляющий, однако,
небольшую часть всего кода СУБД), который называется OSD-код (Operating System
Dependent) и создается отдельно для каждой платформы. С помощью этого уровня аб-
стракции в СУБД Oracle можно использовать специфические возможности ОС для обес-
печения высокой производительности и интегрирования, не переписывая при этом код
самой СУБД. Именно благодаря этому СУБД Oracle может работать как многопотоко-
вое приложение в Windows и как многопроцессное — в UNIX. Механизмы межпроцесс-
ного взаимодействия абстрагированы до такого уровня, что могут воплощаться по-раз-
ному для каждой ОС; при этом обеспечивается такая же производительность, как и в
приложениях, написанных специально для данной платформы.
Помимо синтаксических различий в языке SQL, различаются реализации операто-
ров, различной будет и производительность выполнения одного и того же запроса, есть
проблемы управления одновременным доступом, уровней изолированности транзакций,
согласованности запросов и т.д. Все это более детально будет рассмотрено в главах 3 и
4, — мы увидим, как сказываются эти различия. В стандарте SQL92 попытались дать чет-
кие определения того, как должна выполняться транзакция, как должны обеспечивать-
ся уровни изолированности, но в конечном итоге в разных СУБД результаты получа-
ются различными. Все это связано с реализацией. В одной СУБД приложение будет
вызывать взаимные блокировки и заблокирует все, что можно. В другой СУБД это же
приложение не вызывает никаких проблем и работает отлично. В одной СУБД блоки-
рование (физически упорядочивающее обращения) намеренно использовалось в прило-
жении, а при его переносе в другую СУБД, где блокирования нет, получается неверный
ответ. Чтобы перенести готовое приложение в другую СУБД, требуется много труда и
усилий, даже если при первоначальной разработке неукоснительно соблюдался стандарт.
Do'stlaringiz bilan baham: |