-
[PostgreSQL] function (저장 프로시저)DB/PostgreSQL 2016. 12. 16. 16:47
postgresql의 function을 설명하기에 앞서 먼저 저장 프로시저를 설명하겠습니다. 타 데이터베이스에서 부르는 저장 프로시저는 PostgreSQL의 function (이하,. 함수)와 같은 개념이기 때문입니다.
저장 프로시저란?
저장 프로시저란 SQL 로 만든 함수입니다. 이 함수에 여러 SQL문을 작성해 사용합니다.
사용 이유
단위 하나로, 작업을 만들어 저장 할 수 있기 때문입니다. 모든 이유는 오로지 이 이유 때문입니다. 이 이유 때문에 얻게 되는 건 언어에서 함수를 사용 할 때 얻게 되는 이점과 같습니다. 예를 들어 작업이 단위로 구분되어 있어 디버깅이 쉬워지고 관리 또한 편해지고 반복작업을 없앨 수 있습니다.
여기에 SQL 만이 얻는 장점이 하나 추가 할 수 있는데, 바로 보안입니다. 특정 유저에게 UPDATE 나 DELETE 를 막고, 함수만 사용 할 수 있게 막음으로써, 기존 데이터 회손을 최대한 막을 수 있습니다.
PostgreSQL의 Function
위에서 말했던 것과 같이 타 데이터베이스에서 부르는 저장 프로시저가 postgresql에서는 function이라 칭합니다. PL/pgSQL은 기본적인 SQL만으로 프로시저를 만들지 않고 PL/pgSQL같은 절차지향식 언어를 지원합니다. (Oracle에서는 PL/SQL, SQL Server에서는 TSQL, Postgresql에서는 PL/pgSQL 로 부릅니다. 추가적으로 PL/pgSQL은 PL/SQL과 유사합니다.) 생성 문법은 Oracle과 같이 CREATE OR REPLACE 를 지원하며 변수선언도 유사하고, SQL Server와 같이 function body에 DDL(Date Define Language)을 사용해도 Compile이 Invalid 되지 않습니다.
장점
- 응용 프로그램과 데이터베이스 서버 간의 왕복 횟수를 줄입니다. 모든 SQL 문은 PostgreSQL 데이터베이스 서버에 저장된 함수로 래핑되므로 응용 프로그램은 여러 SQL 문을 보내는 대신 결과를 얻기 위해 함수 호출을 실행하고 각 호출 사이에 결과를 기다려야합니다.
- 사용자 정의 함수가 PostgreSQL 데이터베이스 서버에 사전 컴파일되고 저장되기 때문에 응용 프로그램 성능을 향상시킵니다.
- 많은 응용 프로그램에서 재사용 할 수 있어야합니다. 함수를 개발하면 모든 응용 프로그램에서 재사용 할 수 있습니다.
단점
- 소프트웨어 개발이 느려지므로 많은 개발자가 소유하지 않은 특수 기술이 필요합니다.
- 버전 관리가 어렵고 디버그하기가 어렵습니다.
- MySQL이나 Microsoft SQL Server와 같은 다른 데이터베이스 관리 시스템으로 이식 할 수 없습니다.