데이터 언어 인터페이스
1. 개요
데이터 언어 인터페이스(DL/I)는 계층형 데이터베이스 접근을 위한 언어이다. COBOL, PL/I, C, 어셈블리 언어 등에서 DL/I 명령을 사용할 수 있으며, GU, GN, ISRT, DELT, REPL 등의 주요 명령어를 제공한다. 계층형 데이터베이스의 빠른 속도와 용량 효율성을 제공하지만, 전용 기술을 필요로 하고 SQL과 같은 표준 질의 언어가 부재하다는 단점이 있다. DL/I는 IMS-DB, DL/I VSE 등의 데이터베이스 관리 시스템에서 사용된다.
| 유형 | 데이터베이스 관리 기능 |
|---|---|
| 개발 | IBM |
| 출시 | 1966년 |
| 영향 | 계층형 데이터베이스 모델 |
| 언어 | 어셈블리어 |
| 설명 | 데이터 언어 인터페이스 (Data Language Interface, DL/I)는 IBM 메인프레임 운영 체제, 특히 z/OS의 IMS 데이터베이스와 z/VSE의 DL/I 데이터베이스에 사용되는 데이터베이스 관리 기능이다. |
|---|---|
| 특징 | 계층형 데이터베이스 모델을 구현했다. |
2. 명칭
DL/I 또는 DL/1으로 표기한다. IBM의 제품 매뉴얼 등에서는 DL/I가 주로 사용된다. 이는 동시대 IBM의 프로그래밍 언어인 PL/I의 명명 규칙을 따른 것이다.
3. 특징
DL/I는 계층형 데이터베이스 접근을 위한 언어이다. COBOL, PL/I, C, System/390의 어셈블리 언어 등에서 DL/I 명령을 사용할 수 있다.
3.1. 명령어 종류
PL/I을 제외한 모든 언어에서 데이터 언어 인터페이스(DL/I) 명령어는 COBOL, PL/I, C, System/390의 어셈블리 언어 등에서 사용할 수 있으며, 함수 코드는 네 개의 문자 필드로 구성된다.
* GU (Get Unique): 특정 레코드를 직접 검색한다.
* GN (Get Next): 현재 위치에서 다음 레코드를 순차적으로 검색한다.
* ISRT (Insert): 새로운 레코드를 삽입한다.
* DELT (Delete): 레코드를 삭제한다.
* REPL (Replace): 레코드 내용을 수정한다.
* 기타: GNP (Get Next within Parent), GHU (Get Hold Unique), GHN (Get Hold Next), GHNP (Get Hold Next within Parent), PURG 등이 있다.
3.2. 장점
계층형 데이터베이스는 대규모 데이터베이스에서도 빠른 속도와 적은 용량을 차지하며, 높은 추정 정확도를 제공한다. 레코드 단위 읽기/쓰기를 지원하여 레코드 처리 프로그래밍이 용이하다. (\[\[SQL]]과 같은 테이블 커서 조작은 불필요)
3.3. 단점
데이터 언어 인터페이스는 전용 기술을 필요로 한다는 단점이 있다. 현재 계층형 데이터베이스 자체가 많지 않고, 질의 언어도 SQL처럼 표준화되어 있지 않다. 따라서 레코드 필터링은 SQL의 WHERE 절에 해당하는 기능이 약하므로 애플리케이션에서 직접 수행해야 한다.
4. 함수 코드
PL/I을 제외한 모든 언어에서 DL/I 호출 시 첫 번째 매개변수는 함수 코드이며, 4개의 문자 필드로 구성된다. PL/I의 경우 언어 특성상 첫 번째 매개변수는 뒤따르는 매개변수의 개수를 포함하는 풀워드(Fixed Bin(31))여야 한다.
다음은 함수 코드의 예시이다.
* "GU " (Get Unique)
* "GN " (Get Next)
* "REPL" (Replace)
* "ISRT" (Insert)
* "DELT" (Delete)
* 기타 ("GNP ", "GHU ", "GHN ", "GHNP", "PURG")
5. 호출 예시
COBOL 프로그램에서의 DL/I 호출은 다음과 같은 형식으로 이루어진다.
```cobolfree
02100 CALL “CBLTDLI” USING GU, Stores-Database-PCB, Stores-Segment-Area, Stores-Root-SSA
```
PL/I 프로그램에서의 호출은 다음과 같은 형식으로 이루어진다.
```
CALL PLITDLI(FOUR, GU, Stores-Database-PCB, Stores-Segment-Area, Stores-Root-SSA);
6. 사용 제품
* IMS-DB (z/OS용)
* DL/I VSE (z/VSE용)