프로그래밍/예전글

DBMS의 종류(관계형, 객체지향형, 객체관계형)

Cat체셔 2010. 8. 14. 13:00


관계형 데이터베이스

 - 관계형 데이터베이스(Relational - Database) 시스템은 가장 대표적인 데이터베이스 시스템으로써 성공적인 데이터 모델이 되었습니다. 이렇게 된 이유에는 다음과 같은 몇 가지 특징이 있었기 때문입니다.



첫째, 2차원 구조의 모델을 기반으로 한다.
 - 기존 파일 시스템은 계층적인 수직적 구조를 가진 반면 관계형 모델은 수평적 구조이며 2차원적인 구조입니다. 우리가 많이 사용하는 엑셀 시트가 2차원적 구조의 대표적인 예입니다. 이러한 구조는 컴퓨터가 등장하기 훨씬 전인 종이에 기록하는 시대부터 많이 사용되어 왔고, 그만큼 누구에게나 친숙하고 이해하기 쉬운 구조라 할 수 있습니다. 관계형 모델은 데이터들을 이러한 2차원적인 구조를 가진 테이블 형태로 저장하는 구조를 기본으로 하고 있습니다.


둘째, 데이터의 무결성(Integrity), 트랜젝션 처리 등 데이터베이스 관리 시스템으로써의 기본적인 기능면에서 뛰어난 성능을 보여주었다.


셋째, 질의어(Query Language)를 사용한 데이터 접근 방법이다.
 - 초기 데이터베이스 모델들은 특정 정보를 검색하려면 해당 정보를 찾아가는 과정과 방법을 모두 개별 어플리케이션으로 구현해야만 했습니다. 따라서 그만큼 어플리케이션에 종속적이며 데이터를 추출하거나 저장하는 등의 작업을 수행할 때 효율성이 떨어지게 되었습니다. 이에 반해 질의어는 일정한 패턴이 있으며 이 패턴에만 맞게 질의하고자 하는 조건들을 나열하면 찾고자 하는 정보를 검색해 줍니다. 즉, 데이터베이스 사용자 입장에서는 개별 어플리케이션에 비해 상대적으로 간단한 질의어만 알고 있으면 원하는 정보를 쉽게 얻을 수 있게 된 것입니다. 이러한 접근법은 누구나 쉽게 데이터베이스의 정보를 검색할 수 있다는 점에서 시장에서 큰 환영을 받았습니다.





객체지향형 데이터베이스
 - 관계형 데이터 모델의 여러 가지 장점들로 인해 관계형 데이터베이스가 만능인 것처럼 생각되었지만 시간이 지나면서 몇 가지 문제들이 발생하였습니다. 기존에 내포하고 있던 문제라기보다는 새로운 요구사항의 발생으로 인한 문제였습니다.
  1990년대 들어오면서 어플리케이션들이 기존에 비해 더 많고 복잡한 처리를 하게 됨에 따라 데이터베이스도 좀 더 복잡한 데이터, 예를 들어 사용자 정의 데이터, 오디오 및 비디오 등의 멀티미디어 데이터 등에 대한 저장 및 과닐의 필요성이 대두되었다. 하지만 기존의 관계형 모델로는 이러한 데이터 타입을 지원하는 것이 어려웠으며, 1980년대 등장한 객체지향(Object Oriented) 기술을 데이터베이스에 접목하려는 시도가 생겨났다.
  사실 객체지향 기술은 데이터베이스가 아닌 프로그래밍 분야에서 시작된 기술이다. 모든 사물을 객체로 보고 이 객체들에 대한 정의와 처리방법을 정의한 기술입니다. 그렇다면 관계형 데이터베이스가 할 수 없었던 기능을 수행하는 객체지향 데이터베이스(Object-oriented Database)는 도대체 어떤 특징을 가지고 있는지 살펴봅시다.


첫째, 사용자가 정의한 사용자 정의 타입을 지원한다.
 - 사용자 정의 타입이란 말 그대로 사용자가 임의로 정의한 데이터 유형을 말하며, 기본형 데이터 타입을 뛰어넘어 다양한 형태의 데이터들을 다룰 수 있게 해준다.


둘째, 비정형 복합 정보의 모델링이 가능하다.
 - 비정형 정보(Unstructured Information)란 일반적인 관계형 데이터베이스에서 지원되는 날짜, 문자, 숫자 등의 데이터들을 일컫는 정형 정보(Structured Information)와는 반대되는 개념으로 멀티미디어, 이메일, 문서 등이 이에 해당된다.


셋째, 객체들 사이의 참조(reference)구조를 이용한 접근이 가능하다.


넷째, 90년대에 등장한 많은 객체지향 프로그래밍 언어들과 객체지향 데이터베이스의 스키마 구조가 유사하다는 점이다.
 - 다시 말하지만 데이터베이스는 그 근원이 프로그래밍 언어에서 나왔으므로 객체지향언어를 사용하는(사실 요즘 거의 대부분이 객체지향 언어입니다.) 개발자들의 입장에서 볼 때, 프로그램에서 사용하는 객체들과 데이터베이스 스키마 구조가 유사하다는 점은 프로그램과 데이터베이스 간에 발생하는 추가적인 변환 처리작업을 할 필요가 없어진다는 점을 의미합니다.





객체관계형 데이터베이스
 - 객체관계형 데이터베이스(Object-relational Database)는 기존의 관꼐형 데이터베이스 시스템들이 객체지향 데이터베이스가 제공하는 기능들 중 장점들만을 선별하여 관계형 모델에 통합한 새로운 개념의 데이터베이스입니다. 이것은 안정적으로 데이터베이스의 기본 기능을 지원하는 관꼐형 모델을 기반으로 하면서 객체지향 모델의 장점을 추가한 것입니다. 관계객체형이 아니라 객체관계형으로 표현되어 객체지향이 기반이라고 생각할 소지가 있지만 오해하지 않았으면 합니다. 아마 알파벳 순서로 나열하다 보니 이런식의 용어가 정의된 것 같다고 생각합니다.
  그러면 객체관계형 데이터베이스는 어떤 특징을 가지고 있을까요? 쉽게 추측할 수 있듯이 관계형 데이터베이스의 특징 모두를 가지면서 객체지향 데이터베이스의 장점을 고스란히 갖고 있을 것입니다. 기존의 관계형 데이터베이스에 추가된 특징들만 대표적으로 나열하면 다음과 같습니다.


첫째, 사용자 정의 타입을 지원한다.


둘째, 참조 타입을 지원한다.
 - 참조(reference) 타입이란 객체들로 이루어진 객체 테이블의 경우, 하나의 레코드가 다른 레코드를 참조할 수 있는 것을 말합니다. 관계형 데이터베이스에서는 다른 레코드와 연관관계를 조인을 통해서만 나타낼 수 있었지만, 객체 관계형은 참조 구조를 사용하여 객체지향이 가진 내비게이션 기반 접은이 가능하게 되었습니다.


셋째, 중첩 테이블을 지원한다.
 - 중첩(nested) 테이블이란 테이블을 구성하는 로우(Row) 자체가 또 다른 테이블로 구성되는 테이블을 말합니다. 이러한 구조는 좀 더 복잡하고 복합적인 정보를 표현하는 것을 가능하게 하였습니다.


넷째, 대단위 객체의 저장, 추출이 가능하게 되었다.
 - 이미지 오디오 및 비디오 등 멀티미디어에서는 기존의 일반적인 정형 데이터들보다는 그 크기가 상대적으로 큽니다. 이러한 데이터 유형을 지원하기 위해 대단위 객체(LOB, Large Object) 타입이 기본 타입으로 지원되었습니다.


마지막으로 객체 간의 상속 관계를 지원하는 것이 가능해졌다.
 - 오라클의 경우 OBJECT타입을 지원함으로써 상속(inheritance) 기능을 구현하고 있습니다.


 구분 관계형 데이터베이스 객체지향 데이터베이스 객체관계형 데이터베이스
 데이터 모델 문자, 숫자, 날짜 등
단순 정보타입만 지원
사용자 정의 타입,
비정형 정보타입 지원
사용자 정의,
비정형 정보타입 지원
 대규모 정보처리 우수 보통 우수
 안전성 우수 보통 우수
 장점 사용하기 쉽고,
편리하며 안정적이다.
복잡한 구조의
정보 모델링 가능
관계형 데이터베이스의 안정성에 객체지향 모델링 장점을 추가
 단점 확장성이 부족,
복합적 정보표현 어려움
기본적인 데이터베이스 기능에 있어 안정성과 성능이 떨어짐