해당 글은 Oracle의 공식 Document를 보고 작성하였습니다.
프로시저란?
프로시저는 SQL을 확장하여 고성능의 트랜잭션 처리 언어이다.
즉 트랜잭션의 특징인 원자성, 일관성, 독립성, 영속성을 가지며 데이터의 상태를 변화시키기 위해 일련의 절차를 작성한 프로그램이다.
더 쉽게 정리하자면 데이터베이스 내부에 SQL명령문(INSERT, SELECT, DELETE, UPDATE)의 수행 로직을 하나의 함수처럼 실행하기 위해 RDBMS에 저장한 쿼리의 집합이다.
프로시저의 장점
- SQL과 유사하다.
- 프로시저는 모든 SQL 데이터의 조작, 커서제어, 트랜잭션 제어, SQL 함수 등을 사용할 수 있다.
- 프로시저는 SQL의 데이터 유형을 사용하여 SQL과 형변환 등이 필요 없다.
- 프로시저는 정적 SQL과 동적 SQL 모두 지원한다.
- 고성능
- 프로시저는 명령문 블록을 데이터베이스로 보내 애플리케이션과 데이터베이스 간의 트래픽을 크게 줄일 수 있다.
- 변수를 전달하여 사용할 수 있다.
- 프로시저는 반복적으로 호출할 수 있는 실행 파일 형식으로 저장되기 때문에 데이터베이스 서버에서 네트워크를 통한 단일 호출로 대규모 작업을 시작할 수 있다.
- 프로시저 컴파일러를 통해 최적화 할 수 있다.
- 높은 생산성
- 프로시저에는 설계 및 디버깅 시간을 절약해 주는 많은 기능이 있다.
- 프로시저를 사용하면 데이터 조작을 위한 간결한 코드를 작성할 수 있다.
- 이식성
- 프로시저는 Oracle 개발을 위한 이식이 가능한 언어이다.
- Oracle Database가 실행되는 모든 운영 체제에서 프로시저를 동일하게 실행할 수 있다.
- 확장성
- 프로시저는 데이터베이스 서버에 응용프로그램 처리를 중앙 집중화 하여 확장성을 높인다.
- 공유 서버의 공유 메모리 기능을 통해 Oracle Database는 단일 노드에서 수천 명의 동시 사용자를 지원할 수 있다.
- 관리성
- 프로시저는 각 클라이언트 시스템에 복사본으로 유지하는 것이 아닌 데이터베이스 서버에서 관리할 수 있기 때문에 효율성이 향상된다.
- 객체 지향 프로그래밍 지원
- 프로시저는 객체 지향 설계에 사용할 수 있는 객체 유형을 정의할 수 있다.
위 장점은 오라클에서 "주장"하는 장점이지만 실제 개발 영역에서는 적용되지 않을 수 있습니다.
프로시저의 단점
- 관리성
- 프로시저는 데이터베이스 서버에서 관리할 수 있기 때문에 관리의 효율성이 향상된다고 하지만 형상 관리의 힘듦은 더욱 단점이다.
- 프로시저가 수정된 경우 여러 곳에서 사용된다면 영향도 분석이 어렵다.
- 성능
- SQL에서는 프로시저가 빠르지만 문자, 숫자 연산이 들어간다면 C나 Java보다 성능이 느리다.
- 개발난이도
- 하나의 프로시저에서 다른 프로시저를 호출하며 비즈니스 로직까지 구현되어 있는 경우 프로그램의 순서 트랜잭션의 여부 등이 다방면으로 고려되어야 한다.
- 이는 유지 보수 단계에서 상당한 난이도를 요구하게 된다.
새로운 프로젝트에서 프로시저 개발을 하게 되어 급하게 관련 공부를 하며 정리하였습니다.
'데이터 엔지니어링 > SQL' 카테고리의 다른 글
[PL/SQL] 프로시저 언어 기초(1) (0) | 2023.11.02 |
---|---|
[PL/SQL] 프로시저의 주요 기능 (1) | 2023.11.01 |