Хранимые процедуры

Хранимые процедуры

Храни́мая процеду́ра — объект базы данных, представляющий собой набор DDL, так и

Содержание

Реализация хранимых процедур

Хранимые процедуры обычно создаются с помощью языка SQL или конкретной его реализации в выбранной СУБД. Например, для этих целей в СУБД Microsoft SQL Server существует язык Oracle — PL/SQL, в Firebird — PSQL, в PL/pgSQL, PL/Tcl, PL/Perl, PL/Python, в IBM DB2 — SQL/PL (англ.) и SQL:2003, её язык похож на SQL/PL.

В некоторых СУБД возможно использование хранимых процедур, написанных на любом языке программирования, способном создавать независимые исполняемые файлы, например, на C++ или Delphi. В терминологии Microsoft SQL Server такие процедуры называются расширенными хранимыми процедурами и являются просто функциями, содержащимися в Win32-MS SQL 2005 появилась возможность написания хранимых процедур на любом языке .Net, а от расширенных хранимых процедур в будущем планируется отказаться. СУБД Oracle, в свою очередь, допускает написание хранимых процедур на языке [1] В IBM DB2 написание хранимых процедур и функций на обычных языках программирования является традиционным способом, поддерживаемым с самого начала, а процедурное расширение SQL было добавлено в эту СУБД только в достаточно поздних версиях, после его включения в стандарт ANSI.

Назначение и преимущества хранимых процедур[2]

Хранимые процедуры позволяют повысить производительность, расширяют возможности программирования и поддерживают функции безопасности данных.

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

Кроме собственно выполнения запроса, хранимые процедуры позволяют также производить вычисления и манипуляцию данными — изменение, удаление, выполнять DDL-операторы (не во всех СУБД!) и вызывать другие хранимые процедуры, выполнять сложную транзакционную логику. Один-единственный оператор позволяет вызвать сложный сценарий, который содержится в хранимой процедуре, что позволяет избежать пересылки через сеть сотен команд и, в особенности, необходимости передачи больших объёмов данных с клиента на сервер.

В большинстве СУБД при первом запуске хранимой процедуры она компилируется (выполняется синтаксический анализ и генерируется план доступа к данным). В дальнейшем её обработка осуществляется быстрее. В СУБД Oracle выполняется интерпретация хранимого процедурного кода, сохраняемого в словаре данных. Начиная с версии Oracle 10g поддерживается так называемая естественная компиляция (native compilation) хранимого процедурного кода в Си и затем в машинный код целевой машины, после чего при вызове хранимой процедуры происходит прямое выполнение её скомпилированного объектного кода.

Возможности программирования

Созданную хранимую процедуру можно вызвать в любой момент, что обеспечивает модульность и стимулирует повторное использование кода. Последнее облегчает сопровождение базы данных, так как она становится изолированной от меняющихся бизнес-правил. Модифицировать хранимую процедуру в соответствии с новыми правилами можно в любой момент. После этого все приложения, использующие её, автоматически придут в соответствие с новыми бизнес-правилами без непосредственной модификации.

Безопасность

Использование хранимых процедур позволяет ограничить или вообще исключить непосредственный доступ пользователей к таблицам базы данных, оставив пользователям только разрешения на выполнение хранимых процедур, обеспечивающих косвенный и строго регламентированный доступ к данным. Кроме того, некоторые СУБД поддерживают шифрование текста (wrapping) хранимой процедуры.

Эти функции безопасности позволяют изолировать от пользователя структуру базы данных, что обеспечивает целостность и надежность базы.

Снижается вероятность таких действий как «внедрение SQL-кода», поскольку хорошо написанные хранимые процедуры дополнительно проверяют входные параметры перед тем, как передать запрос СУБД.

Примечания

  1. OracleJVM and Java Stored Procedures (англ.). Oracle Inc.. — Раздел портала Oracle, посвящённый технологиям Java в составе сервера СУБД Oracle. Проверено 6 июня 2009.
  2. Проектирование и реализация баз данных Microsoft SQL Server. — М.—СПб.: Русская редакция, Питер, 2005. — 512 с. — ISBN 5-7502-0089-2, ISBN 5-469-00821-5

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Хранимые процедуры" в других словарях:

  • Хранимая процедура — Хранимая процедура  объект базы данных, представляющий собой набор SQL инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть… …   Википедия

  • Stored procedure — Хранимая процедура  объект базы данных, представляющий собой набор DDL, так и Содержание 1 Реализация хранимых процедур 2 Назначение и преимущества хранимых процедур[2] …   Википедия

  • Сервер базы данных — Сервер БД выполняет обслуживание и управление базой данных и отвечает за целостность и сохранность данных, а также обеспечивает операции ввода вывода при доступе клиента к информации. Архитектура клиент сервер состоит из клиентов и серверов.… …   Википедия

  • Сервер баз данных — Сервер БД обслуживает базу данных и отвечает за целостность и сохранность данных, а также обеспечивает операции ввода вывода при доступе клиента к информации. Архитектура клиент сервер состоит из клиентов и серверов. Основная идея состоит в том,… …   Википедия

  • Firebird — У этого термина существуют и другие значения, см. Firebird (значения). Firebird Логотип Firebird Тип Реляционная СУБД Разработчик Сообщество Firebird Напис …   Википедия

  • Объект (база данных) — Объект реляционной базы данных это часть cловаря данных в реляционной базе данных которая может использоваться для хранения информации или обращения к ней. Объекты базы данных содержат всю информацию, о её структуре и данных. Объекты базы данных… …   Википедия

  • SQL — Класс языка: Мультипарадигмальный Появился в: 1974 Автор(ы): Дональд Чэмбэрлин Рэймонд Бойс Релиз: SQL:2008 (2008) Типизация данных …   Википедия

  • SQL Server 2005 — Microsoft SQL Server Тип Реляционная СУБД Разработчик ОС Microsoft Windows Версия 2008 6 августа 2008 Лицензия …   Википедия

  • SQL Server 2008 — Microsoft SQL Server Тип Реляционная СУБД Разработчик ОС Microsoft Windows Версия 2008 6 августа 2008 Лицензия …   Википедия

  • SQL Server 2000 — Microsoft SQL Server Тип Реляционная СУБД Разработчик ОС Microsoft Windows Версия 2008 6 августа 2008 Лицензия …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»