Overview of PSM

PSM의 특장점

SQL과의 긴밀한 연동

GOLIDILOCKS PSM은 GOLDILOCKS SQL과 긴밀하게 연동하여 사용할 수 있다.

성능 향상

GOLDILOCKS PSM은 서버 내부에서만 실행되므로 사용자 응용 프로그램과 DBMS 서버 사이의 통신 횟수를 줄여 전체적인 성능을 향상시킨다.

생산성 향상

GOLDILOCKS PSM의 언어는 script 언어와 유사하므로 적은 노력으로 원하는 기능을 위한 코드를 작성할 수 있다. 사용자의 업무 로직을 모듈화하여 procedure/ 함수로 제작하면 client 응용 프로그램들을 작성하는 시간을 줄일 수 있다.

이식성

GOLDILOCKS PSM으로 작성된 procedure/ 함수는 ODBC, JDBC, embedded SQL 및 다양한 개발 tool 들에서 동일하게 사용할 수 있다. 또한 서버나 client의 platform 종류에 관계없이 동일하게 작동하므로 종류가 다른 platform에도 쉽게 이식할 수 있다.

관리의 용이성

GOLDILOCKS PSM은 개별 client에 각각 존재하는 유사 로직을 단 하나의 모듈로 서버에 구현하므로 관리가 용이하며 해당 모듈을 사용하는 도중에 필요에 따라 변경할 수도 있다.

Language Elements

Data Types

GOLDILOCKS PSM은 GOLDILOCKS SQL에서 제공하는 모든 built-in data type들을 제공하며, 사용자가 정의하는 record와 collection 타입까지 지원한다. 
자세한 내용은 PSM DataTypes를 참조한다.

Variables

GOLDILOCKS PSM에서 사용자가 필요에 의해 선언한 변수는 모든 expression에서 사용할 수 있다.
자세한 내용은 다음을 참조한다.
• 선언부 (Declarative Part)Assignment

Control Structures

GOLDILOCKS PSM은 일반적인 script 언어들이 제공하는 판단 분기문, GOTO와 같은 무조건 분기문, 반복 수행을 위한 loop 구문들을 대부분 지원한다. 
자세한 내용은 PSM Control Statements를 참조한다.

Subprograms

GGOLDILOCKS PSM subprogram은 이름을 가지고 있고 반복적으로 수행될 수 있는 PSM block이다. 인자를 갖는 subprogram의 경우, 호출할 때마다 서로 다른 인자를 주어 실행시킬 수 있다. 
Subprogram은 procedure나 함수 두 가지 형태 중 하나이며 함수 형태는 반환값을 가진다. 또한 특정 block 내에서 선언되고 그 안에서만 사용되는 nested subprogram도 지원한다. 
자세한 내용은 Using PSM Subprograms를 참조한다.

Processing Transaction in PSM

데이터베이스 트랜잭션은 한 개 이상의 SQL 문장으로 구성된 분해할 수 없는 작업 단위이다. GOLDILOCKS 데이터베이스에서 트랜잭션을 사용하는 SQL 구문은 다음과 같다.

다음과 같은 경우에 트랜잭션이 시작된다.

사용자가 COMMIT이나 ROLLBACK을 수행하거나 접속을 종료할 경우, 트랜잭션이 종료된다.

GOLDILOCKS PSM으로 작성된 subprogram 모듈은 자체적으로는 트랜잭션을 사용하지 않는 구문이기 때문에 호출될 때 새로운 트랜잭션을 발생시키지 않는다.

다만, SQL statement의 atomicity를 보장하기 위해 해당 subprogram이 호출된 상황에 따라 다음과 같이 subprogram내에서 사용될 수 있는 SQL의 종류가 제한된다.