#postgresql #function
#postgresql #функция
Вопрос:
Я хочу знать, что такое функции PostgreSQL.
Когда я должен их написать?
Как я могу их написать?
И как я могу их вызвать?
Ответ №1:
Определение из википедии:
Хранимая процедура — это подпрограмма, доступная приложениям, которые обращаются к системе реляционных баз данных.
Преимущества хранимых процедур в целом, из википедии:
Накладные расходы: поскольку инструкции хранимых процедур хранятся непосредственно в базе данных, они могут полностью или частично устранить накладные расходы на компиляцию, которые обычно требуются в ситуациях, когда программные приложения отправляют встроенные (динамические) SQL-запросы к базе данных. (…)
Предотвращение сетевого трафика: основным преимуществом хранимых процедур является то, что они могут выполняться непосредственно в ядре базы данных. В производственной системе это обычно означает, что процедуры выполняются полностью на специализированном сервере базы данных, который имеет прямой доступ к обрабатываемым данным. Преимущество здесь в том, что можно полностью избежать затрат на сетевую связь. Это становится особенно важным для сложных последовательностей операторов SQL.
Инкапсуляция бизнес-логики: хранимые процедуры позволяют программистам встраивать бизнес-логику в виде API в базу данных, что может упростить управление данными и уменьшить необходимость кодирования логики в других клиентских программах. (…)
Делегирование прав доступа: во многих системах хранимым процедурам могут быть предоставлены права доступа к базе данных, которыми пользователи, выполняющие эти процедуры, напрямую не обладают.
Некоторая защита от атак с использованием SQL-инъекций: хранимые процедуры могут использоваться для защиты от атак с использованием инъекций. Параметры хранимой процедуры будут обрабатываться как данные, даже если злоумышленник вставляет команды SQL. (…)
В PostgresSQL хранимые процедуры называются пользовательскими функциями. Пример определения:
CREATE FUNCTION somefunc(quantity integer) RETURNS integer AS $
DECLARE
myvariable integer := 2;
BEGIN
RETURN quantity * myvariable;
END;
$ LANGUAGE plpgsql;
(Вы можете использовать другие языки для определения хранимых функций в PostgreSQL)
Пример вызова:
SELECT somefunc(100);
Дополнительная информация: http://www.postgresql.org/docs/9.1/static/server-programming.html
Комментарии:
1. В PostgreSQL хранимые процедуры называются «пользовательскими функциями».
Ответ №2:
PostgreSQL запускает хранимые процедуры более чем на дюжине языков программирования, включая Java, Perl, Python, Ruby, Tcl, C / C и собственный PL / pgSQL, который похож на Oracle PL / SQL.
Использование хранимых процедур зависит от ваших потребностей и зависит от логики вашей программы, на мой взгляд, хранимые процедуры полезны только в некоторых случаях, а не всегда…
Я использовал хранимую процедуру в приложении с несколькими серверами баз данных, в этом случае использование хранимых процедур может быть чрезвычайно полезным, например, в случае, если у вас есть запрос, который необходимо изменить для запуска на другом типе сервера базы данных, в этом случае вы можете написать хранимую процедуру на каждом сервере базы данных ивызовите его из своей программы, убедившись, что он запущен, и получите требуемый набор результатов без каких-либо изменений в клиентском коде.
Чтобы узнать, как создать хранимую процедуру в PostgreSQL, обратитесь к этой странице документации.
Ответ №3:
основное преимущество заключается в снижении издержек сетевого трафика. Хранимая процедура почти такая же (не совсем), как бизнес-логика или логическая шина. Его главное преимущество заключается в создании динамического корпоративного приложения.Вы можете найти 100 хороших продуктов, которые вышли из строя только из-за отсутствия динамической структуры базы данных. Хранимые процедуры, функции, триггеры, последовательности, индексы и реляционная природа базы данных являются реальными ключами для создания отличных приложений.Моя компания всегда старается уменьшить уровни логики на стороне клиента с помощью хранимых процедур. Большая часть критической логики хранится в хранимых процедурах, что делает программистов и тестировщиков счастливыми и соответствует их срокам.