일반적으로 많이 사용되는 관계 데이터베이스는 현실 세계의 데이터를 관계 데이터 모델의 구조적 특성을 만족하면서 정규화 규칙을 따르는 릴레이션으로 저장하고 관리한다. 하지만 관계 데이터베이스는 관계 데이터 모델의 기능적 제약조건과 SQL의 표현력 한계로 인해 다양한 응용 분양에 부적합하다는 문제가 제기되었다.
이런 이유로 1980년대 초반부터 관계 데이터베이스와 다른 형태의 데이터베이스를 구축하기 위해 새로운 데이터 모델을 연구해왔는데, 이 중 하나가 바로 객체지향 데이터 모델이다.
객체지향 데이터 모델은 객체와 객체 식별자, 속성과 메서드, 클래스, 클래스 계층 및 상속, 복합 객체등을 지원하는 객체지향 개념에 기반을 둔 데이터 모델이다. 객체지향 모델은 다양한 응용 분야의 데이터 모델링을 위한 새로운 요구 사항을 지원할 뿐만 아니라, 의미상 관계가 있는 데이터베이스 구조를 표현하려고 할 때 강력한 설계 기능을 제공한다.
객체와 객체 식별자
객체는 현실 세계에 존재하는 개체를 추상적으로 표현한 것이다. 각 객체는 시스템 전체에서 유일하게 식별될 수 있는 객체 식별자를 가지고, 객체 식별자를 특정 객체에 접근하기 위한 유일한 수단으로 사용한다. 객체간의 관계는 객체 식별자를 사용해 참조할 수 있다.
속성과 메서드
객체지향 데이터 모델을 구성하는 기본 요소닝 객체는 해당 객체의 상태를 나타내는 하나 이상의 속성과 객체의 상태를 조작할 수 있는 하나 이상의 메서드로 구성된다.
객체지향 데이터 모델의 속성은 관계 데이터 모델의 속성과 같은 의미로 볼 수 있다. 하지만 관계 데이터 모델의 속성은 기본으로 제공된 데이터 타입을 도메인으로 하는 단일값만 가질 수 있는 반면, 객체지향 데이터 모델의 속성은 값을 여러개 가질 수 있다.
예를 들어 학교와 학생의 관계를 생각해보자.
관계 데이터 모델의 경우 학교 스키마와 학생 스키마 간에 1:N 관계가 성립되는 반면,
객체지향 데이터 모델의 경우 학교 객체 안에, 학생 속성이 List 형태로 존재할 수 있다.
특정 객체의 속성과 해당 속성에 대한 메서드에 접근하려면 메시지를 사용해야 한다. 한 객체의 속성 값을 수정하려면 이 역할을 담당하는 메서드를 실행시키는 메시지를 해당 객체에 보냉야 한다. 즉 메시지는 객체에 접근하기 위한 공용 인터페이스 역할을 담당한다.
클래스
클래스는 속성과 메서드를 공유하는 유사한 성질의 객체들을 하나로 그룹화한 것이다. 객체는 클래스의 구성원으로, 클래스 인스턴스, 또는 객체 인스턴스 라고도 한다. 클래스 내부에는 해당 클래스의 객체를 위한 데이터 구조와 메서드 구현헤 관한 세부 사항을 기술한다.
클래스 계층과 상속
클래스를 단계적으로 세분화 하ㅏ면 클래스 간의 계층 관계가 발생하여 결과적으로 클래스 계층이 하나 형성된다.
예를 들어 운동선수 클래스는 축구선수, 야구선수 클래스로 세분홯할 수 있다. 축구선수, 야구선수 클래스를 다시 각각 세분화하면 위의 그림과 같은 클래스 계층 관계가 성립한다.
축구선수, 야구선수 클래스가 운동선수 클래스의 세분화된 개념이라면, 운동선수 클래스는 축구선수, 야구선수 클래스의 일반홛된 개념이다.
관계 데이터베이스에서는 질의 대상과 결과가 모두 릴레이션이지만, 객체지향 데이터베이스에서는 질의 대상이 클래스이고, 질의 결과는 클래스에 속하는 객체 집합이다. 객체지향 데이터베이스에서는 객체지향 개념을 기반으로 클래스, 속성, 메서드, 객체 등을 이용해 질의를 표현한다.
클래스 하나 또는 클래스 하나와 해당 클래스의 하위 클래스 전체를 대상으로 하는 질의를 단일 오퍼랜드 질의라 한다.
그리고 여러 클래스를 대상으로 하는 질의를 다중 오퍼랜드 질의라 한다.
관계 데이터베이스와 달리 객체지향 데이터베이스의 데이터 모델과 질의어는 표준화되지 못했다. 특히 객체지향의 개념을 완벽하게 표현하면서도 쉽게 사용할 수 있는 질의어가 아직 개발되지 않은 상태다. 이때문에 객체지향 데이터베이스는 널리 사용되지 못하고 있다.
객체관계 데이터 모델은 객체지향 개념과 관계 데이터 모델의 개념을 통합한 것으로, 릴레이션, 객체, 메서드, 클래스, 상속, 캡슐화, 복합 객체 등을 모두 지원한다. 그리고 관계 데이터 베이스의 표준 질의어인 SQL을 표준으로 채택하여 계속 발전하고 있다.
객체지향 데이터모델과 객체관계 데이터모델은 유사점이 많다. 하지만 두 데이터베이스는 개발 목적에서 근본적인 차이가 있다.
객체지향 데이터베이스가 객체지향 프로그래밍 개념에 기반을 두고 데이터베이스의 기능을 추가하는데 목적을 두고 있다면, 객체관계 데이터베이스는 관계 데이터베이스에 기반을 두고 사용자가 더 풍부한 데이터 타입을 추가할 수 있도록 하는데 목적을 두고 있다.
데이터베이스 시스템을 물리적으로 한 장소에 설치하여 운영하는 것을 중앙 집중식 데이터베이스 시스템이라고 한다. 하지만 데이터베이스 시스템을 한 곳에 설치하지 못하고 여러 곳에 분산 설치하여 운영하는 경욱가 종종 있다. 물리적으로 분산된 데이터베이스 시스템을 네트워크로 연결해, 사용자가 논리적으로는 하나의 중앙 집중식 데이터베이스 시스템처럼 사용할 수 있도록 한 것을 분산 데이터베이스 시스템이라 한다.
분산 데이터베이스 시스템에서는 데이터베이스가 분산되어 있음을 사용자가 인식하지 못하게 하는 것이 중요한데, 이를 분산 데이터 독립성이라 한다. 분산 데이터 독립성이란, 데이터가 분산되지 않은 것 처럼 사용할 수 있다는 의미로, 분산 데이터베이스 시스템의 주요 목표다.
위치 투명성
위치 투명성은 데이터베이스가 지역적으로 분산되어 있지만, 사용자가 접근하려는 데이터의 실제 저장 위치를 알 필요 없이 데이터베이스의 논리적인 이름만으로 데이터에 접근할 수 있다는 의미다.
중복 투명성
데이터베이스에 데이터를 저장할 때 두 가지 방법을 선택할 수 있다.
데이터를 중복하여 저장하거나, 지역의 분산 데이터베이스에 저장하거나.
데이터를 중복으로 저장하는 것이 단점만 있는 것이 아니다. 한 지역의 데이터베이스에 장애가 발생하더라도, 다른 지역의 데이터베이스를 이용하면 되기에, 신뢰성과 가용성을 높일 수 있다.
단편화 투명성
단편화는 하나의 릴레이션을 더 작은 조각으로 나누고, 각 조각을 별개의 릴레이션으로 처리하는 것이다. 단편화를 하면 각 조각이 전체 릴레이션이 아니라 전체 릴레이션의 일부가 되기 때문에 저장 공간을 적게 사용할 뿐만 아니라, 관리할 데이터 수도 줄어든다. 그러므로 단편화를 통해 데이터 중복의 장점은 그대로 취하면서 데이터 중복의 단점을 보완할 수 있다.
단편화를 수행할 땐, 다음 조건을 만족해야 한다.
릴레이션을 단편화하는 방법에는 수평적 단편화 수직적 단편화 혼합 단편화가 있다.
수평적 단편화는 릴레이션을 수평적으로 단편화하는 것으로, 릴레이션을 투플 단위로 나눈다.
그림은 수평적 단편화 방법을 통해 제품 릴레이션을 두 조각으로 나누어 서로 다른 지역에 위치시킨 예다.
수직적 단편화는 릴레이션을 수직적으로 단편화하는 것으로, 릴레이션을 속성 단위로 나눈다.
분산 데이터베이스 시스템은 위의 세 가지 방법을 사용하여 데이터를 여러 지역에 저장한다. 그러나 사용자가 데이터를 쓸 때는 데이터가 단편화된 것을 인식할 수 없도록 단편화 투명성을 제공해야 한다.
병행 투명성
분산 데이터베이스와 관련된 트랜잭션들이 동시에 수행되더라도 결과는 항상 일관성을 유지하는 것이다.
장애 투명성
장애 투명성은 특정 지역 시스템에 문제가 발생하더라도, 전체 시스템이 작업을 계속 수행할 수 있는 것이다.
위의 그림은 분산 데이터베이스의 일반 구조다. 모든 분산 데이터베이스가 이러한 구조록 개발되는 것은 아니지만, 기본 구조로 알아둘 필요가 있다.
전역 개념 스키마
분산 데이터베이스에 저장할 모든 데이터 구조와 제약조건을 정의한다. 전역 개념 스키마를 정의할 때 데이터의 분산은 고려하지 않는다.
이를 관계 데이터 모델의 관점에서 보면 데이터베이스 안에 존재하는 모든 릴레이션 스키마의 집합이다.
단편화 스키마
분산 데이터베이스에서는 분산을 위해 전체 데이터 구조도 여러 조각으로 분할해야 한다.
단편화 스키마는 전역 개념 스키마를 분할하는 방법인 단편화를 정의한다.
할당 스키마
할당 스키마는 각 조각 스키마의 인스턴스를 물리적으로 저장해야 되는 지역을 정의한다.
지역 스키마
지역별로 저장하고 있는 데이터 구조와 제약조건을 정의한다.
중앙 집중식 데이터베이스 시스템에서는 최선의 질의 처리 전략을 선택하는 기준으로 데이터베이스가 위치한 디스크에 접근하는 횟수를 이용한다.
반면 분산 데이터베이스 시스템에서는 디스크 접근 횟수뿐만 아니라, 네트워크에서 데이터를 전송하는 비용과 하나의 질의문을 분해하여 여러 지역에서 병렬 처리함으로써 얻는 성능상의 이점도 고려한다.
분산 데이터베이스 시스템의 장점
분산 데이터베이스 시스템의 단점
분산 데이터베이스 시스템은 데이터의 분산, 단편화, 중복 등 중앙 집중식 데이터베이스 시스 템에 비해 추가로 고려할 사항이 많아 설계 및 구축 비용이 더 많이 든다. 그리고 물리적으로 분산된 여러 지역을 모두 관리해야 하기 때문에 중앙 시스템만 관리하면 되는 중앙 집중식 데 이터베이스 시스템보다 관리가 복잡하고, 관리 비용도 더 많이 든다. 또한 데이터 처리 요청 이 발생하면 여러 지역에 있는 분산 데이터베이스를 함께 이용해야 하기 때문에 중앙 집중식 데이터베이스 시스템에는 필요 없는 추가통신 비용이나 처리 비용이 발생한다.
이밈지나 동영상 같은 멀티미디어 데이터를 이용하는 다양한 으용ㅇ 분야가 나타나면서 멀티미디어 데이터를 관리하고 이에 대한 질의를 효율적으로 처리하는 멀티미디어 데이터베이스 시스템의 필요성이 늘고 있다.
멀티미디어 데이터베이스 시스템은 숫자나 문자 데이터와 같은 일반 데이터를 처리하는 기능 뿐 아니라, 영상, 음향 및 애니메이션과 같은 멀티미디어 데이터도 효과적으로 저장하고 처리하는 기능을 제공해야 한다.
멀티미디어 데이터를 저장하고 처리하는 방법은 크게 두 가지로 발전하였다.
관계 데이터베이스에서의 멀티미디어 데이터 처리
관계 데이터베이스에 멀티미디어 타입을 추가하면 데이터를 저장하고 처리하는 방법이다.
이러한 시스템에서는 이미지, 그래픽 등의 대용량 멀 티미디어 데이터를 처리하기 위해 이진 대형 객체BLOB; Binary Large Object라는 새로운 데이터 타입을 지원한다.
객체지향 데이터베이스에서의 멀티미디어 데이터 처리
1980년대 후반부터 객체지향 데이터베이스를 멀티미디어 데이터 처리에 이용하려고 시도하기 시작했다. 객체지향 데이터베이스는 다양한 관계의 표현, 데이터 추상화와 캡슐화, 상속 등 멀티미디어 데이터를 처리하는 데 필요한 다양한 기능을 제공한다.
멀티미디어 데이터베이스는 단순 텍스트뿐만 아니라 오디오, 비디오 같은 다양한 형태의 데이터를 다룬다. 데이터베이스 시스템의 기본 기능은 데이터를 저장하고, 검색을 요청하는 사용자의 질의를 처리하여 원하는 결과를 제공하는 것이다. 멀티미디어 데이터베이스 시스템은 데이터베이스 시스템의 기본 기능을 제공할 뿐만 아니라, 멀티미디어 데이터 특성에 따른 다양하고 새로운 사항도 고려해야 한다.
멀티미디어 데이터에 대한 검색 요청을 기존의 SQL로 완벽하게 표현하기 어려울 뿐만 아니라, 경우에 따라서는 불가능할 수도 있다.
멀티미디어 데이터데 대한 사용자 질의를 적절히 표현하고 처리하려면 멀티미디어 데이터베이스 관리 시스템만의 질의 처리 기법이 필요하다.
멀티미디어 데이터의 질의 유형
멀티미디어 데이터의 유형에 따라 가능한 질의의 유형을 분류하면 다음과 같다.
멀티미디어 데이터의 질의 처리
멀티미디어 데이터에 대한 다양한 유형의 검색 질의를 처리하기 위해 다음과 같은 기법이 자주 사용된다.
매칭 기법: 수학 함수로 저장된 데이터와 질의 조건으로 주어진 데이터 간의 유사도를 수학 함수로 계산하여, 유사도가 높은 데이터를 검색한다.
랭킹 기법: 검색 결과를 질의 조건과의 관련 정도에 따라 정렬하여 관련성이 높은 결과부터 제공한다.
필터링 기법: 질의 조건과 관련성이 적은 데이터를 단계적으로 제거하여 검색 범위를 줄여가면서 검색한다.
인덱스 기법: 인덱스 구조를 이용해 질의 조건에 적합한 데이터를 검색한다.
인터넷이 활성화됨에 따라 대량의 데이터를 관리해야 하는 새로운 유형의 웹 서비스가 출현하였다. 새로운 유형의 웹 서비스에서 대용량 데이터를 효율적으로 관리하려면 데이터베이스 시스템에서 제공하는 기능이 반드시 필요하다.
이러한 이유로 웹 서비스와 데이터베이스 시스템을 통합한 웹 데이터베이스가 등장하게 되었다.
서비스가 커짐에 따라 데이터베이스에 저장하는 데이터의 양이 크게 증가하였다. 그래서 데이터베이스에 많은 양의 데이터를 효과적으로 저장하는 것도 중요하지만, 사용자가 원하는 데이터를 빠르게 검색하여 제공하는 기능이 무엇보다 중요해졌다.
의사결정에 도움이 되는 데이터를 빠르고 정확히 추출할 수 있는 방법에 대한 연구가 많이 이루어졌는데, 그 중 한 가지 방법이 데이터 웨어하우스다.
데이터 웨어하우스가 일반 데이터베이스와 다른 주요 특징 몇 가지는 다음과 같다.