В большинстве продуктов СУБД возможности базы данных можно расширить с помощью хранимых процедур. Возможности программирования расширяются с помощью дополнений к SQL в виде операторов, позволяющих управлять ходом выполнения и условной логикой, такой как T-SQL у СУБД SQL Server и PL/SQL у СУБД Oracle.
На текущий момент в СУБД MySQL не предусмотрена поддержка обработки хранимых процедур, но одним из самых больших преимуществ этой реляционной СУБД является ее расширяемость. Поддерживая традиции движения "open source", СУБД MySQL как часть своего дистрибутива имеет исходные тексты всех программ, что позволяет разработчикам добавлять свои функции и возможности, которые компилируются в процессор MySQL в качестве части исходного продукта. СУБД MySQL также позволяет производить загрузку отдельных библиотек C и C++ в том же пространстве памяти, что и процессор при запуске MySQL.
Любой из этих методов позволит взаимодействовать с вашими функциями так же, как и с любой уже встроенной функцией, предусмотренной в MySQL, например функцией SUM() или AVG(), потому что эти функции работают в том же пространстве памяти, что и MySQL. А поскольку они выполняются на том же самом сервере, где располагается MySQL, их использование минимизирует сетевой трафик между вызывающей программой и сервером, что в свою очередь способствует росту производительности.
Добавлять функции в MySQL можно и воспользовавшись интерфейсом пользовательских функций. Функции этого вида первоначально были разработаны как специальные библиотеки C/C++, а потом были добавлены и удалены динамически с помощью операторов CREATE FUNCTION и DROP FUNCTION. Пользовательские функции добавляют нагрузку, которая заключается в установке всех ваших библиотек при каждой установке MySQL; однако при этом запуск самого MySQL будет происходить быстрее, т.к. эти функции можно разместить в двоичном дистрибутиве, а не производить повторную компиляцию для того, чтобы подключить новые функции. Кроме того, есть отличный шанс, что ваши библиотеки могут работать в неизменном виде даже с новыми версиями MySQL.
Можно добавить функции в виде естественных (встроенных) функций MySQL. Естественные функции скомпилированы вместе с самим сервером MySQL и стали постоянной частью самой инсталляции MySQL. Это значительно упрощает инсталляцию по сравнению с использованием библиотек, т.к. определив один раз дистрибутив можно быть полностью уверенным в том, что все последующие инсталляции будут содержать все добавленные вами функции. С другой стороны, необходимо повторно компилировать и создавать свой дистрибутив для каждой новой версии MySQL.
Применение творческого подхода
Сымитировать инкапсуляцию и централизацию хранимых процедур в MySQL можно путем сохранения кода в таблице с последующей выборкой этого кода для выполнения вызывающей программой. Например, программа, написанная на Perl, может работать с таблицей, в которой содержится код Perl. Клиентская программа может осуществить поиск нужного программного блока и обработать этот код во время выполнения.
Этот метод позволяет размещать программы на сервере, и при этом не требуется, чтобы клиентские программы ничего "не знали" об изменениях кода. Из-за многочисленных передач на сервер и приемов с сервера и ввиду того, что этот подход работает только с интерпретируемыми языками, это не является полноценной заменой всех возможностей, которые представляют хранимые процедуры в других реляционных СУБД...
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Расширяемость
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Целостность данных. Продолжение. | Все о MySQL. Симметричная обработка с помощью MySQL |