트랜잭션

본 장에서는 OpenFrame AIM에서 제공하는에서의 온라인 트랜잭션의 개념에 대해 설명한다.

1. 트랜잭션의 시작과 끝

OpenFrame AIM에서는 데이터의 정합성을 보장하기 위해 모든 데이터의 갱신을 트랜잭션 단위로 처리한다. 한 트랜잭션 중간에 업무 애플리케이션에서 요청한 데이터의 갱신은 그 트랜잭션이 정상적으로 종료될 때 처리된다.

OpenFrame AIM에서의 트랜잭션은 업무 애플리케이션이 MQN에서 하나의 레코드를 읽어 들임으로 시작되어, 다음 레코드를 읽기 직전에 끝난다. 즉, MQN을 읽어 들이는 READ 명령이 트랜잭션의 경계가 된다.

figure 3 1
트랜잭션의 범위

2. 트랜잭션 단위의 처리 보장

트랜잭션의 중간에 일어나는 갱신 처리가 갱신 명령 시점이 아니라 트랜잭션이 정상적으로 종료하는 시점에 처리되므로 트랜잭션 단위의 처리가 보장된다. 트랜잭션 중에 일어나는 갱신 처리는 버퍼에 임시로 저장되었다가 트랜잭션의 종료 시점에 저장 장치에 영구히 저장된다.

figure 3 2
트랜잭션 중 발생하는 갱신 처리 보장

트랜잭션 단위의 처리 보장은 저장 장치를 사용하는 데이터에만 한정되지 않는다. MQN에 저장된 메시지 역시 트랜잭션 단위의 처리가 보장된다. 트랜잭션 중간에 업무 애플리케이션이 단말로 보내는 메시지는 애플리케이션이 WRITE 명령을 내릴 때 버퍼에 저장되었다가 트랜잭션이 종료할 때 DCMS를 통해 단말로 보내진다.

figure 3 3
온라인 업무에서 메시지의 전송 시점

OpenFrame AIM에서 사용하는 자원 중 Non-VSAM 데이터셋은 트랜잭션 단위의 처리를 지원하지 않는다.

3. 다중 트랜잭션

하나의 업무 애플리케이션은 2개 이상의 트랜잭션으로 만들어질 수 있다. OpenFrame AIM에서 구동되는 업무 애플리케이션의 트랜잭션은 MQN으로부터 레코드를 읽어 들이는 READ 명령에서 시작하여 그 다음 READ 명령의 직전에서 끝난다.

figure 3 4
다중 트랜잭션 처리

위 그림의 예는 단말이 3개의 트랜잭션으로 구성된 애플리케이션과 통신하는 것을 나타내고 있다. 단말이 어떤 업무 애플리케이션과 통신하기 시작했을 때 가장 먼저 만나는 트랜잭션의 READ 명령을 특별히 Initial-READ라고 한다.

업무 애플리케이션이 2개 이상의 트랜잭션으로 구성되어 있을 경우 트랜잭션들은 데이터셋, 데이터베이스, 지역변수 등을 모두 공유하지만 단말과의 통신은 마치 각 트랜잭션이 독립적인 애플리케이션인 것처럼 처리한다. 하나의 단말에서 요청된 트랜잭션이 종료하는 즉시 다른 단말로부터의 다른 트랜잭션에 관한 요청을 처리할 수 있다. 이런 AIM의 기능을 활용하면 트랜잭션 하나의 길이가 짧을수록 전체적인 시스템의 성능은 향상된다.