계층형 데이터 모델

계층형 구조로 데이터를 저장한 IMS 을 설계한 IBM

 

에드거 프랭클린 코드 박사의 이론인 관계형 데이터 모델을 기반한 RDBMS들이 아직도 승승장구 하고 있다. 왜냐하면, 우리가 구현하고자 하는 비즈니스를 잘 표현할 수 있고, 쉽게 구현 할 수 있기 때문이다. 관계형 데이터 모델 이전에는 데이터 모델이 과연 없었을까? 그렇지 않다. "계층형" 데이터 모델과 "망"형 데이터 모델이 있었다. 그 모델들은 아직도 쓰이고 있으나 범용성에서 뒤처지기 때문에, 데이터 모델 학습시 선택되지 않는 것으로 보인다. 이 번 글에서는 관계형 데이터 이전에 각광 받았던 모델 중 계층형 데이터 모델를 소개한다.

 

 

1. 계층형 데이터 모델 (Hierarchical Data Model)

 : IBM의 IMS(Information Management System)에서 구현되어 그 당시 각광을 받았다. 계층형 데이터 모델의 특징은 데이터가 TREE 구조로 저장되는 것이다. 부모-자식 관계를 통해 계층적으로 연결된 데이터 관리를 하는 방식이다. 그래서 IMS는 트리구조의 데이터 저장을 위한 명령어와 메타데이터 제공하며, 데이터를 계층 구조로 관리 할 수 있도록 만들졌다. 

 

 

2. 계층형 구조 예시

  : 은행 - 지점 - 고객 - 계좌 - 거래내역 구조 예제를 보자. 부모-자식 (1:N) 관계를 형성하고 있다. 1:N 관계로 복잡하고 다양한 업무를 표현하기에는 제한적이다. 하지만, 그 당시에는 명확한 구조로 중요한 모델로 사용되었다. 

TREE 구조 형태

은행 : 최상위 레벨 ENTITY, 여러 지점 보유

지점 : 각 지점은 특정 은행에 소속, 여러 고객을 관리

고객 : 고객은 특정 지점에 소속, 여러 계좌를 보유

계좌 : 특정 고객의 재산 관리, 여러 거래내역을 기록

거래내역 : 각 계좌에 대해 발생하는 개별 거래 기록 저장

 

 

3.  계층형 모델을 구현 방식 ( IBM IMS 방식 = 관계형 데이터 모델에서 ORACLE 과 같은 존재 )

   : IMS DB의 DBD(Database Definition)를 사용해 정의서

BANK : 은행 정보를 저장하는 최상위 세그먼트

BRANCH : 은행의 각 지점 정보를 저장, 상위 세그먼트는 BANK

CUSTOMER : 고객 정보를 저장하는 세그먼트, 상위 세그먼트는 BRANCH

ACCOUNT : 고객의 계좌 정보를 저장하는 세그먼트, 상위 세그먼트는 CUSTOMER

TRANSACTION : 계좌의 거래내역 저장, 상위 세그먼트는 ACCOUNT

각 세그먼트에는 PARAENT 속성을 통해 상위 세그컨트를 지정하여, 계층 구조를 나타냄

 

 

4. DL/I 명령을 이용한 데이터 조회 ( = 관계형 데이터 모델에 SQL과 같음 )

  : IMS의 DL/I(Data Language/I) 명령어를 통해 데이터를 조회 할 수 있음. 

   GU( Get Unique) : Bank-id 가 0001 은행 조회

   GN( Get Next ) 하위 세그먼트를 차례로 탐색하는 명령어  ( 반복적 탐색 )

  ※ 계층 구조 탐색 : DL/I 명령을 사용할때, 부모 세그먼트를 먼저 가져온 후 하위 세그 먼트를 탐색할수 있음

      계층을 벗어나거나 건너뛰어서 접근 할 수 없음.

 

 

5. 계층형 과 관계형 데이터 모델 비교

 : 계층형 모델은 고정된 계층관계를 표현하는데 적합하고, 관계형 데이터 모델은 다양한 관계와 유연한 데이터 구조에 적합한 데이터베이스 모델이다. 

특성 계층형 데이터 모델 관계형 데이터 모델
구조 Tree (부모-자식) 구조 테이블(행과 열로 구성된 )구조
관계표현 계층적 부모-자식 관계 외래키를 통한 관계 설정, 조인으로 유연한표현
무결성 제약조건이 없어 무결성 관리 어려움 PK,FK 등의 제약조건으로 무결성 보장
데이터접근방식 트리 순회방식, 루트 노드 부터  순차탐색 SQL로 자유로운 데이터 접근, 다양한 검색 지원
확장성 및 변경용이성 고정된 구조로 변경이 어려움 유연한 구조, 확장 및 관계 변경 용이