RDBII 소개

본 장에서는 RDBII의 기능과 애플리케이션에서 RDBII에 대한 처리과정에 대해서 설명한다.

1. 개요

OpenFrame RDBII는 OpenFrame에서 COBOL과 같은 High Level 언어에서 관계형 데이터베이스를 색인 파일처럼 사용할 수 있도록 하는 모듈이다. RDBII 모듈은 Fujitsu사의 Symfoware의 기능 중 관계형 데이터베이스를 색인 파일처럼 사용할 수 있다. RDBII를 이용해 테이블이나 뷰와 같은 객체를 생성하면, 이를 SQL을 이용해서 관계형 데이터베이스로 직접 사용할 수 있고, VSAM 색인 파일처럼 사용할 수도 있다.

2. RDBII 기능

RDBII는 다음과 같이 데이터베이스의 구성 요소에 대한 생성/삭제와 같은 관리 기능과 이를 색인 파일처럼 사용할 수 있는 기능과 특정 시점에 사용자에 대한 액세스 권한을 제한 및 해제할 수 있는 기능을 제공한다.

  • 데이터베이스 구성 관리 기능

    사용자는 데이터베이스 구성 요소인 메타 데이터베이스, 퍼블릭 데이터베이스, 스키마, 테이블, 뷰, 그리고 인덱스에 대한 생성 및 삭제를 할 수 있다. OpenFrame에서는 JYQDDUTY 유틸리티를 이용해서 구성 요소를 생성 및 삭제할 수 있는 기능을 제공한다.

  • 관계형 데이터베이스를 색인 파일로 사용할 수 있는 기능

    테이블이나 뷰를 VSAM 색인 파일처럼 사용할 수 있다. 애플리케이션에서는 이러한 색인 파일을 OPEN, READ, WRITE, REWRITE, DELETE, START, CLOSE에 대한 처리를 수행할 수 있다.

  • 데이터베이스에 대한 사용 제한 및 해제

    특정 시점에 데이터베이스에 대한 사용을 제한 및 해제해야 하는 경우가 있다. OpenFrame에서는 AIM 커맨드를 이용해서 사용을 제한 및 해제할 수 있는 기능을 제공한다.

3. RDBII 처리 과정

애플리케이션에서 RDBII에 대한 I/O 처리에 대한 요청은 다음과 같이 처리한다.

  1. 애플리케이션에서 RDBII 색인 파일에 대한 I/O 처리를 요청한다.

  2. 파일 핸들러는 이에 대한 처리를 OpenFrame에 요청한다.

  3. OpenFrame RDBII에서는 해당 I/O 처리를 수행하기 위해 SQL DML문장으로 변환한 후 이에 대한 처리를 RDBMS에 요청한다.

  4. RDBMS에서는 요청받은 SQL 문장을 처리한 후 이에 대한 결과를 반환한다.

figure 1 1
RDBII 처리 과정

4. RDBII를 사용하기 위한 준비

RDBII를 사용하기 위해 다음의 사항을 준비해야 한다. 본 절에서는 각 단계별 상세 내역에 대해서 기술한다.

  • 메타 테이블 생성

  • RDBII를 위한 VOLUME 생성

  • EBCDIC 순서로 정렬하기

4.1. 메타 테이블 생성

OpenFrame RDBII에서는 RDBII의 구성 요소 정보를 관리하기 위해 메타 정보를 RDBMS의 테이블을 이용해서 관리한다. RDBII에서는 사용자가 추가, 삭제한 구성 요소에 대한 정보를 메타 테이블을 이용해서 자동으로 관리한다. 해당 메타 테이블들은 baseinit 툴의 create를 수행하는 경우 생성된다.

다음은 메타 테이블에 대한 설명이다.

  • OFM_RDBII_META_MDB

    메타 데이터베이스를 생성할 때 지정한 정보를 관리한다.

  • OFM_RDBII_META_PDB

    퍼블릭 데이터베이스를 생성할 때 지정한 정보를 관리한다.

  • OFM_RDBII_META_SCHEMA

    스키마를 생성할 때 지정한 정보를 관리한다.

  • OFM_RDBII_META_TABLE

    테이블을 생성할 때 지정한 테이블의 기본 정보를 관리한다.

  • OFM_RDBII_META_TABLE_COLUMNS

    테이블을 생성할 때 지정한 컬럼 정보를 관리한다.

  • OFM_RDBII_META_VIEW

    뷰를 생성할 때 지정한 뷰의 기본 정보를 관리한다.

  • OFM_RDBII_META_VIEW_COLUMNS

    뷰를 생성할 때 뷰의 컬럼 정보를 관리한다.

  • OFM_RDBII_META_INDEX

    인덱스를 생성할 때 지정한 인덱스의 기본 정보를 관리한다.

  • OFM_RDBII_META_INDEX_COLUMNS

    인덱스를 생성할 때 지정한 인덱스 키 컬럼에 대한 정보를 관리한다.

  • OFM_RDBII_META_FILE

    색인 파일을 생성할 때 지정한 기본 정보를 관리한다.

  • OFM_RDBII_META_FILE_ACCESS

    색인 파일을 생성할 때 지정한 PATH 정보를 관리한다.

각 테이블의 컬럼 정보는 RDBII 메타 테이블를 참고한다.

4.2. RDBII를 위한 VOLUME 생성

RDBII의 기능 중 관계형 데이터베이스를 색인 파일로 처리하기 위해서는 JYQDDUTY 유틸리를 이용해서 색인 파일로 생성해야 한다. 색인 파일은 Non-VSAM 형태로 생성하는데, 데이터셋을 할당하는 과정에서 이 데이터셋이 일반적인 Non-VSAM 데이터셋인지 RDBII 데이터셋인지에 대한 판단이 필요하다.

RDBII에서는 데이터셋이 OpenFrame 환경설정의 ds 서브젝트, RDBII_DATASET 섹션에 RDBII_VOLSER 키에 지정한 VOLSER에 위치하였으면 이를 RDBII 데이터셋으로 처리한다. 따라서 이를 위해서 RDBII 데이터셋을 위한 볼륨이 필요하다. 자세한 내용은 OpenFrame Base "환경설정 안내서"를 참고한다.

$ ofconfig list -n NODE1 -s ds -sec RDBII_DATASET -k RDBII_VOLSER -l
=====================================================================================
          NODE          :  NODE1
        SUBJECT         :  ds
        SECTION         :  RDBII_DATASET
          KEY           :  RDBII_VOLSER
          TYPE          :  2
     DEFAULT_VALUE      :  RDBII
         VALUE          :  RDBII
      AVAIL_VALUE       :
      DESCRIPTION       :  Specify RDBII volume. if dataset exist in specifed volume,
                          it regards RDBII dataset.
=====================================================================================

다음은 데이터셋이 RDBII 데이터셋임을 명시하기 위해 RDBII 데이터셋을 위치시킬 볼륨을 추가하는 예제이다.

volmgr define device -dn 0001 -dt 3380 -ms 2048
volmgr define volume -v RDBVOL -dn 0001

4.3. EBCDIC 순서로 정렬하기

RDBII에서는 기본적으로 ASCII 데이터로 처리하고 있으며, 테이블을 생성할 때에 지정하는 UNQIUE 제약 조건이나 INDEX을 생성할 때에 ASCII 데이터를 기준으로 정렬한다. 순차적인 검색을 처리할 때에는 사용자가 지정한 키 정보를 기본으로 해당하는 인덱스에 저장된 순서대로 데이터를 읽어온다.

사용자가 EBCDIC 순서로 처리하고자 하는 경우에는 테이블을 생성할 때의 UNIQUE 제약 조건이나 INDEX를 생성할 때에 EBCDIC 순서로 생성해야 한다. 이를 위해서는 몇 가지 준비 작업이 필요하다. 이 작업은 RDBII를 사용하기 이전에 설정해야 하며, 중간에 KEYSEQ를 변경해서는 안된다. 우선 사용자가 EBCDIC 순서로 처리하기 위해서는 OpenFrame 환경설정의 ds 서브젝트, RDBII_DATASET 섹션에 KEYSEQ 키의 VAUE 항목을 변경해야 한다. 자세한 내용은 OpenFrame Base "환경설정 안내서"를 참고한다.

다음은 KEYSEQ를 EBCDIC으로 처리하기 위해서 환경설정 정보를 변경한 예제이다.

$ ofconfig list -n NODE1 -s ds -sec RDBII_DATASET -k KEYSEQ
=====================================================================================
    SUBJECT     |        SECTION         |          KEY           |        VALUE
=====================================================================================
       ds       |     RDBII_DATASET      |         KEYSEQ         |        EBCDIC
=====================================================================================
ofconfig list -n NODE1 -s ds -sec RDBII_DATASET -k KEYSEQ -l
=====================================================================================
          NODE          :  NODE1
        SUBJECT         :  ds
        SECTION         :  RDBII_DATASET
          KEY           :  KEYSEQ
          TYPE          :  2
     DEFAULT_VALUE      :  ASCII
         VALUE          :  EBCDIC
      AVAIL_VALUE       :
      DESCRIPTION       :  RDBII KEY SEQUENCE
=====================================================================================