Make your own free website on Tripod.com
to designdb

|Abstract |Introduction |Goals of Research |Object-Oriented Database |System Implementation |Conclusion |References|

III. Object-Oriented Database
since 15 December, 1996, last modified 15 December, 1996


앞에서 제조 데이타베이스의 필요성, 제조 데이타베이스의 특징, 그리고 현재 사용되고 있는 제조 데이타베이스의 문제점을 살펴 보았다. 언급한 제조 데이타베이스에대한 요구는 새로운 개념을 기본으로 하는 데이타베이스를 고안하도록 하였다. 차세대 데이타베이스(Next Generation Database)로 일컬어지는 이들 데이타베이스 중의 하나가 객체지향적 데이타베이스(Object-Oriented Database)이다. 객체지향적 데이타베이스는 프로그램밍 언어, 인공지능에서 발전된 객체지향적 개념을 기본으로 하고 있으며, 이 객체 지향적 개념은 현실의 표현력(또는 추상화 능력)이 뛰어나다는 것 이외에 상속성, 추상적 테이타 형의 구현등으로 여려가지 장점을 보여주고 있다. 이 장에서는 객체지향적 개념이 제조 데이타베이스에 어떠한 장점을 줄 수 있는지를 염두에 두면서, 기본이 되는 객체지향적 개념과 이 개념을 실현 시킨 객체지향적 데이타베이스에 대해 기술하겠다.

3.1 객체지향적 모델

관계형 모델과 다르게 객체지향적 모델은 여러 연구분야의 성과의 결정체라고 볼 수 있다. 프로그램 언어, 인공지능, 데이타베이스에서의 발전이 하나로 통합되어 현실세계를 각 분야의 도구를 이용해서 모델링하는데 필요한 일반적 시각을 형성한 것이다. 하지만 객체지향적 모델은 짧은 연구역사와 다양한 개념으로 인하여 아직 통일된 모델이 없으며, 단지 대다수의 관련된 학자들이 고통적으로 수긍하는 공통 개념(Core Concept)이 있다[9]. 객체(Object), 클래스(Class), 정보 은익(Encapsulation), 상속성(Inheritance), 메쏘드(Method), 그리고 메세지 전달(Message Passing)등이 일반적인 공통 개념에 속한다.

객체지향적 접근방식에서는 표현하려는 모든 대상을 객체라는 통일된 개념으로 본다. 자동차의 예에서 자동차의 엔진은 객체이며, 몸체도 객체이다. 객체는 꼭 물리적 형체를 갖출 필요가 없다. 개념적이고 추상적인 것도 동일한 시각으로 볼수 있다[15]. 예의 자동차에서 엔진의 출력을 나타내는 숫자도 객체이다. 이와 같은 모든 현실세계의 사물을 객체라는 단일 개념으로 고정시킴으로써, 복잡한 현실을 하나의 공통된 단위의 관계로 단순화 시킬수 있다[10]. 보다 구체적으로 객체는 속성을 나타내는 항목(Attribute)- 이후로는 단지 항목이라고 칭한다- 을 가지고 있다. 한 발동기 객체의 항목으로는 출력, 형정수, 피스톤의 수, 그리고 배기량등을 가질 수 있다. 관계형 모델과는 다르게 이들 항목값이 객체를 전적으로 구별하지는 않는다. 각 객체는 자신을 다른 객체와 구별하기 위하여 항목값과 아울러 고유의 식별자(Object Identifier)가 있다. 즉 출력이 300 마력, 4 행정, 6기통, 1500 cc 의 항목 값을 가지고 있는 두개의 발동기라고 해도 만든 회사가 다름으로 해서 서로 다른 객체로 취급될(서로 다른 객체 식별자를 가질) 수 있다.

클래스는 같은 종류의 객체를 모아주는 일종의 틀(Structure)이다. 현실세계를 객체라는 하나의 단위로 보면, 이들 하나 하나의 관계를 나타내는 것은 비효율적이며 불가능하다. 이들중 같은 것들을 하나의 틀로 묶고 그 틀들의 관계를 정의하는 것이 보다 효율적일 것이다. 나아가 클래스는 속한 객체들이 공통으로 가지는 항목값이나 뒤에 언급할 메쏘드를 대표로 정의하는 역할을 한다. 예로 현실세계의 모든 발동기의 행정이 4행정이라면 이 항목값은 각 객체가 가지는 것보다는 발동기의 클래스 항목값에 대표로 포함하면 보다 효율적이다.

클래스간의 관계는 크게 두가지로 나뉜다. 하나는 한 클래스가 다른 클래스의 특수한 경우가 되는 경우이고, 다른 하나는 한 클래스가 다른 클래스의 한 항목값의 범위 (Domain)가 되는 경우이다. 후자의 경우는 Aggregation 관계를 구성한다[9]. 전자의 경우에는 두 클래스간에 상속성(Inheritance)이 나타내게 한다. 상속성이 나타나는 관계에서 일반적인 클래스(상위 클래스: Super Class)의 모든 항목은 특수한 클래스(하위 클래스: Sub Class)에 모두 상속된다. 이때 하위 크래스는 상위 클래스에서 상속받은 항목에 대해서는 다시 정의할 필요가 없다. 예로 출력과 배기량을 항목으로 가지는 발동기라는 클래스 아래에 출력, 배기량, 점화기구라는 항목을 가진 가솔린 발동기와 출력, 배기량, 그리고 압축기구라는 항목을 가진 디젤 발동기라는 두가지 하위 클래스가 존재할 수 있다. 출력과 배기량 항목은 상위 클래스 발동기에서 상속받은 것이므로 가솔린과 디젤 발동기 클래스에서는 다시 정의할 필요가 없다.

그림 1. 발동기의 Inheritance 관계와 Aggregation 관계

자료와 그 자료를 처리하는 프로시듀어(Procedure)를 같은 장소에 같은 방법으로 관리한다면 매우 편리하다. 객체지향적 개념에서는 메쏘드(Method)라 불리는 프로시듀어를 일반 자료 항목과 같은 방식으로 관리한다. 메쏘드는 객체에 보내진 신호와 필요한 입력 정보를 받으면 정해진 작업을 실행하고 그 결과를 내거나, 혹은 다른 객체에 신호를 보내기도 한다. 이때 특정 개체에 활동을 일으키게 하는 신호를 메세지(Message)라고 하고 메세지의 객체간의 이동을 메세지 전달(Message Passing)이라고 한다. 예로 발동기의 수명을 계산하는 메쏘드가 발동기 클래스에 있고, 이는 단지 발동기를 장착한 차체의 무게와 관계있다고 한다면 다음과 같은 메세지 전달을 통해 발동기의 수명을 계산할 수 있다. 수명을 알기 위해서 발동기 객체에 수명을 구하라는 메세지를 전달한다. 이 메세지를 받은 객체는 곧 필요한 정보를 얻기위해 특정 차체 객체 (발동기를 장착할 차체 객체) 무게를 전해 달라는 메세지를 전달하고, 해당 차체 객체는 자신의 무게를 되돌려 주게 된다. 이로써 수명을 계산할 수 있게된 발동기 객체는 수명을 계산하여 결과를 내주게 된다.

그림 2. 발동기의 수명을 구하는 메쏘드(Method)와 Message Passing

정보은익(Encapsulation)이란 객체의 정보를 일정한 경로를 통해서만 접근할 수 있게 하는 것( 메쏘드를 통하여 )을 말한다. 이렇게 함으로써, 객체에 접근하는 이용자는 표준화된 방법을 이용할 수 있다. 표준화된 방법은 다른 응용에서도 재사용할 수 있음으로 효율적 프로그램 관리를 할 수 있다. 또한 일정한 경로를 사용하므로써 정보의 안전이라는 측면의 이익도 생각할 수 있다.

3.2 객체지향적 데이타베이스

객체지향적 개념은 매우 일반적인 개념으로 데이타베이스 분야에도 영향을 미쳤다. 프로그래밍 언어, 인공지능, 시스템 분석등 다른 분야에 응용된 객체지향 개념과 차이가 없는 개념을 데이타베이스 분야에서도 찾아볼 수 있다. 이는 객체지향적 데이타베이스의 또다른 장점으로 부각되고 있다. 객체지향적 시스템 분석에서의 일관된 객체지향적 개념이 데이타베이스 구현단계에서도 그대로 적용 되므로 분석과 구현단계에서의 자연스러운 연결이 된다. 아울러 객체지향적 프로그래밍 언어를 사용해서 응용 프로그램을 작성한다면, 데이타베이스와 응용 프로그램 언어 차이에서 오는 이질성을 극복하여 전체적으로 일관된 개념과 환경하에서 시스템을 구현할 수 있다[11].

위의 언급한 장점이외에 객체지향 데이타베이스는 지금까지의 데이타베이스의 단점을 해소 시킬수 있는 몇가지 특징을 가지고 있다. 이 특징은 객채 지향적 개념의 클래스 계층구조(Class Hierarchy), 메쏘드(Method), 유전성(Inheritance)등의 성질에서부터 파생된다. 지금부터 객체지향 데이타베이스가 기존의 데이타베이스에 비하여 어떤 장점이 있는지를 제조분야에 응용을 예로 알아보겠다.

객체지향적 데이타베이스는 클래스 자료 구조를 이용하여 다양한 현실세계를 쉽게 표현할 수 있다. 상위 클래스와 하위 클래스의 관계인 IS-A관계와 aggregatoion 관계를 만드는 IS-PART-OF 관계가 객체지향적 데이타베이스에서 나타낼 수 있는 클래스간의 관계이다. 특히 구성요소들이 계층적 관계와 부속적 관계가 많은 제조 데이타베이스에서는 현실 세계와 표현하려는 객체지향적 모델이 잘 일치한다. 예로 발동기 제조 공장에서 가솔린과 디젤 발동기를 생산하며, 각 제품 종류마다 공통으로 들어가는 자료 항목이 배기량, 출력이라고 하자. 이 정보의 표현을 발동기라는 클래스와 가솔린 발동기, 디젤 발동기라는 클래스를 만들고, 발동기 클래스와 가솔린, 디젤 발동기 클래스사이에 IS-A 관계를 설정하면 실제 세계를 자연스럽게 표현할 수 있고, 항목을 재사용할 수도 있다.

객체 지향적 데이타베이스는 자료구조를 쉽게 변화시킬 수 있다. 기존의 관계형 데이타베이스는 자료구조의 변화를 위해서는 전체 시스템을 멈춘후 수정을 해야 했다. 이에 비해 객체 지향 데이타베이스의 스키마 변환(Schema Evolution) 기능 - 2장에서 언급한 자료구조 변환기능- 은 데이타베이스 운용 단계에서 자료구조를 변화시킬수 있다.

스키마 변환 기능은 제품의 디자인 단계와 유연 제조시스템 등, 짧은 시간에 새로운 형태의 자료구조가 필요한 부분에 매우 편리하게 사용될 수 있다. 특히 설계단계에서는 많은 시험 제품을 구상해보게 되는데, 각각의 시험 재품은 시간적으로 앞선 시험 제품에 변화를 준 것이다. 그러므로 이들간에는 단지 항목의 값이 바뀐 변화에서 전체 구조가 바뀐 변화까지 다양한 형태의 관계가 성립된다. 설계 단계에서의 제품 정보의 변화를 저장하고 관리하는 버젼 관리에서 객체지향적 데이타베이스의 자유로은 스키마 변환 능력이 매우 중요한 역할을 한다.

메쏘드 개념은 객체지향 데이타베이스가 해당 자료와 그의 프로시듀어를 같이 소유하게 한다. 다양한 형태의 정보와 그의 다양한 처리를 필요로 하는 설계, 제조 환경에서 자료를 사용해서 알맞는 응용 프로그램(처리 과정)을 만드는 것은 중요하고도 어려운 일이다. 객체지향적 데이타베이스에서는 메쏘드를 해당 자료에 필요한 기본적이고 표준화된 처리과정으로써 미리 정의하고, 이를 일반 자료처럼 관리한다(상속관계, 질의 인출 관리 등). 이미 만들어진 메쏘드들은 응용 프로그램어들이 자신의 프로그램에 가져다 재 사용할 수 있다. 그러므로 메쏘드는 설계, 제조분야에서 대규모의 복잡한 응용 프로그램이나, 일시적으로 사용되는 변화가 심한 응용 프로그램을 작성에 효과적으로 사용될 수 있다.

기존의 관계형 데이타베이스에서는 이용자 정의 자료형을 지원하지 못한다. 하지만 객체지향적 데이타베이스의 복합 객체[9]는 다양한 이용자 정의 자료형를 지원한다. 즉, 한 항목의 자료형이 단순한 정수, 문자, 실수가 될 수 있을 뿐만 아니라 이용자가 정의한 발동기라는 클래스, 혹은 차체라는 클래스도 될 수 있다. 이는 이용자가 자신이 표현할 수 있는 자료형태에 제한을 느끼지 않는다는 것을 뜻한다. 이용자 정의 자료형의 지원은 객체 지향적 데이타베이스의 현실 세계에 대한 표현력을 더욱 높여주는 역할을 한다.

관계형 테이블을 이용하여도 부분적으로 부품간의 복잡한 관계를 표현할 수 있다. 하지만 이 과정에서 연관관계를 설정하기 위하여 두 테이블간의 관계된 Key Attribue를 모아서 새로운 테이블을 만들어야 하고, 이를 이용하여 시간과 자원이 많이드는 연산으로 알려진 Join을 해야 한다. 반면에 객체지향적 데이타베이스는 관계된 자료에관한 일종의 지시자( Pointer )인 객체 인식자(Object id)를 가지고 있으므로 빠르고 직접적으로 원하는 자료에 도달할 수 있다. 자료에대한 빠른 접근 기능은 복잡한 데이타 저장 구조에서 다양한 자료들을 빈번히 찾아야하는 제조 데이타베이스에서 중요한 요구사항이 된다. 효율적인 객체지향적 데이타베이스의 자료접근 방식은 결론 부분에서 제안된 객체지향적 모델에 대한 질의와 동일한 문제에 적용된 관계형 모델에 대한 질의의 비교를 통해서 보다 자세히 알아본다.

to eng db
Korean Engineering Databases ⓒ copyright Namchul Do, 1996