소개

본 장에서는 IBM 메인프레임의 IMS 시스템에 대해 간략하게 소개하고, OpenFrame HiDB 제품의 지원 범위에 대해서 설명한다.

1. IMS 시스템

OpenFrame HiDB(이하 HiDB)는 Hierarchical Database 또는 High Performance Database의 약자로, IBM 메인프레임의 IMS/DB에 대응되는 OpenFrame 제품이다. IMS 시스템은 1968년에 소개된 IBM의 메인프레임 소프트웨어로 대형 비즈니스 시스템을 위한 트랜잭션 관리 기능과 데이터베이스 관리 기능을 제공한다.

IMS 시스템은 크게 데이터 통신 관리(DC)와 데이터베이스 관리(DB)의 2개 주요 제품으로 구성되어 있다.

  • IMS/DC 제품

    메시지 기반의 트랜잭션 처리 시스템이다. 트랜잭션이란 특정 업무를 실행시키기 위해 준비된 입력 데이터 패킷을 의미한다. IMS/DC 제품은 네트워크 터미널에서 전달되거나 다른 애플리케이션에서 생성된 트랜잭션 메시지를 처리할 수 있도록 하는 기반 서비스를 제공한다.

  • IMS/DB 제품

    계층적 데이터베이스 관리 시스템으로 고객의 업무 데이터를 구조적으로 저장하고 관리하는 기능을 제공한다. 이 제품은 IMS/DC에서 실행되는 애플리케이션이나 순수 Batch 애플리케이션에서 데이터베이스에 쉽게 접근할 수 있도록 하는 인터페이스를 제공한다.

애플리케이션이 IMS 시스템에서 관리되는 트랜잭션 메시지나 데이터베이스에 접근하기 위해서는 표준 IMS 함수를 호출해야 한다. 애플리케이션은 각 프로그램 언어에서 제공되는 표준 애플리케이션 인터페이스를 통해 이런 IMS 함수를 사용할 수 있다. 일반적으로 이런 인터페이스를 DL/I(Data Language One)이라고 부른다.

2. 데이터베이스 기초

컴퓨터 시스템이 처음 개발되었을 당시, 데이터는 특정 애플리케이션에 종속된 개별 데이터셋에 저장되거나 혹은 개별 프로그램의 일부분으로 작성되었다. 따라서 같은 내용의 데이터가 서로 다른 데이터셋에 중복 저장되는 일이 빈번하게 발생했다. 예를 들어 고객에 대한 세부 정보는 주문 프로그램과 배송 프로그램에 동시에 사용되어야 한다.

이런 경우 다음과 같은 문제가 발생한다.

  • 데이터가 프로그램마다 독립적으로 처리되기 때문에 동일해야 하는 데이터의 내용이 다를 수 있다.

    예를 들면 주문 프로그램에서 사용되는 데이터셋에 저장된 고객의 주소 정보와 배송 프로그램에서 사용되는 데이터셋에 저장된 고객의 주소 정보가 다를 수 있다.

  • 공통적인 데이터 내용이 변경되어야 한다면, 여러 장소에 저장되어 있는 데이터 내용이 바뀌어야 하므로 변경범위가 크고 처리시간이 오래 걸린다.

  • 데이터 제어에 대한 중앙 집중적인 장치가 없기 때문에 불법적인 데이터 접근이나 데이터 유실에 대한 관리가 어렵다.

  • 중복되는 데이터의 내용 때문에 저장장치의 저장공간이 낭비된다.

반면에 고객의 업무 데이터를 구조적으로 저장하고 관리해 주는 데이터베이스 관리 시스템을 사용하게 되면 다음과 같은 추가적인 효과를 얻을 수 있다.

  • 데이터의 정합성을 유지하면서 동시에 여러 개의 애플리케이션이 데이터에 접근하고 변경할 수 있도록 한다.

  • 애플리케이션이 실행에 실패하더라도 여러 데이터베이스 레코드에 걸쳐서 존재하는 애플리케이션 데이터의 정합성을 유지시켜 준다.

  • 데이터 백업 및 복구 유틸리티를 제공해서 고객의 중요 비즈니스 데이터의 유실에 대비한다.

  • 데이터에 대한 모니터링 및 성능 튜닝을 할 수 있는 유틸리티를 제공해 준다.

3. 계층적 데이터베이스

IBM의 IMS/DB 데이터를 저장하는 방식으로 계층 모델(Hierarchical Model)을 사용했다. 계층 모델에서 개별 데이터 항목은 계층 구조에서의 세그먼트로 관리된다.

figure 1 1
Hierarchical Data Structure

계층 모델의 데이터 구조는 세그먼트 유형과 세그먼트 인스턴트로 설명할 수 있다. 세그먼트 유형은 세그먼트의 종류를 의미하고, 세그먼트 인스턴스는 세그먼트 유형의 실제 데이터 내용이다.

계층 데이터 구조에서 각 세그먼트들은 부모/자식 관계로 연결된다. 부모 세그먼트 인스턴스는 0개 혹은 1개 이상의 자식 세그먼트 인스턴스를 가질 수 있다. 하지만, 자식 세그먼트 인스턴스는 오직 1개의 부모 세그먼트 인스턴스를 가진다. 같은 부모 세그먼트 인스턴스를 가지는 같은 세그먼트 유형의 자식 세그먼트 인스턴스들을 트윈 세그먼트라고 한다. 하지만, 같은 부모 세그먼트 인스턴스를 가지는 다른 세그먼트 유형의 자식 세그먼트 인스턴스들은 형제 세그먼트라고 한다.

부모 세그먼트는 여러 자식 세그먼트 유형을 가질 수 있다. 그리고 자식 세그먼트는 동시에 부모 세그먼트가 될 수 있고 자식 세그먼트도 자식 세그먼트를 가질 수 있다. 부모 세그먼트가 없는 세그먼트를 루트 세그먼트라고 한다. 루트 세그먼트는 최상위에 하나만 존재한다. 하나의 루트 세그먼트 인스턴스 아래에 있는 모든 세그먼트 인스턴스를 묶어서 DL/I 데이터베이스 레코드라고 한다. 이런 DL/I 데이터베이스 레코드를 모두 모아놓은 집합이 DL/I 데이터베이스가 된다.

DL/I 데이터베이스 안에 저장되어 있는 특정 세그먼트를 찾기 위해 루트 세그먼트부터 조상 세그먼트들을 연속적으로 나열한 순서를 세그먼트 계층경로(Hierarchical Path)라고 한다. DL/I 데이터베이스에 있는 특정 세그먼트를 다른 세그먼트와 구분하고 직접 접근하기 위해서 DL/I는 순차 필드를 사용한다. 일반적으로 각 세그먼트에는 순차 필드로 표시된 필드를 하나 가지고 있다. 같은 부모 인스턴스를 갖는 트윈 세그먼트 인스턴스들은 유일한 값의 순차 필드를 가지고 있어야 한다.

앞에서 설명한 세그먼트 계층경로 이외에 IMS/DB에서는 다음과 같은 추가적인 2가지의 데이터베이스 세그먼트 접근경로를 제공한다. 2가지 방법은 모두 애플리케이션이 물리 데이터베이스에 접근하는 색다른 접근경로를 제공하고 이미 정의되어 있는 기본적인 데이터베이스 계층 구조 위에 추가적으로 정의되어 사용된다.

  • Logical Relationship

    하나 이상의 물리 데이터베이스를 논리적으로 연결해서 사용할 수 있도록 해준다. 애플리케이션은 하나의 데이터베이스를 사용하는 것처럼 접근이 가능하다.

  • Secondary Indices

    하나의 물리 데이터베이스에서 루트 세그먼트 또는 루트 세그먼트가 아닌 다른 세그먼트를 통해 데이터베이스 레코드에 접근할 수 있는 접근경로를 제공한다.

4. 액세스 방식

데이터베이스, 세그먼트 및 데이터베이스 레코드는 HSAM, HDAM, DEDB 등과 같은 데이터베이스 액세스 방식에 따라 물리적으로 구성된다. 데이터베이스 액세스 방식의 하부에서는 물리적인 디스크에 데이터 I/O를 하기 위해 메인프레임의 데이터셋 액세스 방식이 사용된다.

계층적 데이터베이스의 구조와 애플리케이션에서의 접근 방식은 DBD, PSB, ACB 등의 컨트롤 블록에 의해 정의된다. 해당 컨트롤 블록들은 데이터베이스 관리자에 의해 매크로 스크립트 문장으로 기술되고, 이 소스 스크립트 파일을 컴파일하면 컨트롤 블록으로 만들어진다. 만들어진 컨트롤 블록들은 데이터베이스 시스템과 애플리케이션에 의해 사용된다.

데이터 세그먼트와 레코드를 구성하고 저장하는데 사용되는 데이터베이스 액세스 방식은 여러 종류가 있다. 특정 액세스 방식을 선택해서 사용할 경우 애플리케이션에서 사용할 수 있는 기능이나 성능에 영향을 줄 수 있으므로 애플리케이션의 필요 조건을 충분히 분석한 뒤에 결정되어야 한다.

다음은 가장 많이 사용되는 계층적 데이터베이스 액세스 방식이다.

  • Hierarchical Direct Access Method (HDAM): 계층 직접 액세스 방식

  • Hierarchical Indexed Direct Access Method (HIDAM): 계층 색인 직접 액세스 방식

  • Hierarchical Sequential Access Method (HSAM): 계층 순차 액세스 방식

  • Hierarchical Indexed Sequential Access Method (HISAM): 계층 색인 순차 액세스 방식

  • Data Entry Database (DEDB)

계층적 데이터베이스의 물리적 저장 구조의 유형은 다음과 같다.

  • Hierarchical Direct

    Hierarchical Direct 구조는 물리적인 데이터베이스 레코드가 각 세그먼트의 PREFIX에 저장되어 있는 주소 포인터에 의해 서로 연결되어 있는 저장구조이다. HDAM과 HIDAM의 2가지 액세스 방식이다.

    • HDAM은 Hierarchical Direct 구조에서 루트 세그먼트를 찾기 위해 Randomizer 알고리즘을 이용한다.

    • HIDAM은 Hierarchical Direct 구조에서 루트 세그먼트를 찾기 위해 인덱스를 사용한다.

  • Hierarchical Sequential

    Hierarchical Sequential 구조는 데이터베이스 세그먼트들의 관계가 물리적인 데이터베이스 레코드들의 인접성으로 표시되는 저장구조이다.

    Hierarchical Direct Access Method가 많은 장점을 가지고 있기 때문에 Hierarchical Sequential Access Method는 많이 사용되지 않는다. HSAM과 HISAM의 2가지 액세스 방식이다.

  • Data Entry Database (DEDB)

    DEDB는 대용량 고성능 애플리케이션에 적합하게 만들어졌다. 하지만 애플리케이션에서 이 기능을 사용하려면 데이터베이스가 해당 기능을 사용하도록 특별하게 설계되어야 한다.

    Hierarchical Direct 구조와 Hierarchical Sequential 구조의 데이터베이스는 Full Function 데이터베이스로 불리기도 한다. 반면에 DEDB는 Fast Path 데이터베이스라고 불린다. IBM 메인프레임에서는 Main Storage Database(MSDB)라고 불리는 Fast Path 데이터베이스가 하나 더 있는데, 최근에는 VSO(Virtual Storage Option) 옵션을 사용하는 DEDB에 의해 대체되었다.

  • Index Database

    인덱스 데이터베이스는 Secondary Index나 HIDAM의 Primary Index를 물리적으로 구현하기 위해 사용되는 데이터베이스이다.

  • Generalized Sequential Access Method (GSAM)

    Batch 프로그램이나 BMP 프로그램에서 계층구조 데이터베이스가 아닌 순차 데이터셋에 대해 간단한 데이터베이스 액세스 API를 제공하기 위해 만들어진 액세스 방식이다.

5. 지원 범위

HiDB는 IBM 메인프레임의 IMS/DB에 대응되는 OpenFrame 제품으로, IMS/DB의 물리적 구조를 RDB의 테이블 형태로 저장하며 GSAM만 예외적으로 Non-VSAM 데이터셋 형태를 그대로 사용한다.

HiDB가 지원하는 액세스 방식은 다음과 같다.

  • HIDAM: RDB 테이블 형태로 DBD에서 SEQ로 지정한 필드에 인덱스를 정의한다

  • HDAM: RDB 테이블 형태로 루트 세그먼트의 OCC_ID 컬럼에 인덱스를 정의한다.

  • GSAM: Non-VSAM 데이터셋을 그대로 사용하며 HiDB 명령으로 접근할 수 있도록 지원한다.

이외 액세스 방식은 HIDAM과 동일하게 지원한다.

HiDB에서는 부가적인 데이터베이스 레코드 접근 방법으로 다음과 같은 기능을 일부 제공한다.

  • Logical Relationship

  • Secondary Indices

HiDB에서 지원되는 고급 기능에 대한 자세한 내용은 본 안내서의 고급 기능을 참고한다.