객체 관계 데이터베이스
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
객체 관계 데이터베이스(ORDBMS)는 1990년대 초반 연구를 통해 발전하여, 기존 관계형 데이터베이스에 객체 개념을 추가하여 확장한 시스템이다. 술어 논리에 기반한 선언적 쿼리 언어를 유지하며, Illustra와 PostgreSQL과 같은 제품을 낳았다. 1990년대 중반에 상업용 제품이 등장했으며, SQL:1999에 구조적 타입을 통해 대부분의 아이디어가 통합되었다. IBM Db2, Oracle Database, Microsoft SQL Server 등이 이 기술을 지원하며, 대한민국에서는 1990년대 후반부터 대규모 기업 및 공공기관을 중심으로 도입되었다. ORDBMS는 사용자 정의 데이터 형식과 표현식을 통해 쿼리를 직관적으로 만들 수 있으며, 데이터 간의 관계를 활용하여 관련 레코드를 쉽게 찾을 수 있다.
더 읽어볼만한 페이지
- 데이터베이스 모델 - 플랫 파일 데이터베이스
플랫 파일 데이터베이스는 각 줄에 레코드를 기록하고 구분자로 필드를 구분하는 단순한 형태이지만, 데이터 중복, 대용량 처리의 어려움, 보안 취약성 등의 한계로 특정 용도로만 활용된다. - 데이터베이스 모델 - 네트워크 모델
네트워크 모델은 찰스 바크만이 발명하고 CODASYL 컨소시엄에 의해 표준 사양으로 개발된 데이터베이스 모델이며, 바흐만 다이어그램으로 표현되고 IDS, IDMS, IMAGE 등 다양한 시스템에서 구현되었다. - 데이터베이스 관리 시스템 - 트랜잭션 처리
트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이며, ACID 속성을 통해 데이터 정확성을 유지하고 롤백, 데드락 처리 등의 기술을 활용한다. - 데이터베이스 관리 시스템 - 저장 프로시저
저장 프로시저는 데이터베이스 관리 시스템에서 SQL 문들을 미리 컴파일하여 저장하고, 모듈화, 보안성, 성능 향상, 유지보수 용이성과 같은 특징을 가지며, 데이터베이스 시스템마다 구현 방식과 지원하는 언어가 다를 수 있는 코드 묶음이다. - 데이터베이스 - 지식 베이스
지식 베이스는 특정 주제 정보를 체계적으로 저장 및 관리하며 규칙 기반 추론으로 새로운 지식 도출에 활용되고, 웹 콘텐츠 관리 및 지식 관리 시스템으로 확장되어 온톨로지를 이용, 인공지능 기술과 결합하여 문제 해결책을 제시하고 경험을 통해 학습하는 시스템이다. - 데이터베이스 - 화이트리스트
화이트리스트는 특정 대상만 허용하고 나머지는 차단하는 접근 제어 목록으로, 정보보안, 무역, 금융 등 다양한 분야에서 활용되지만, 목록 선정 기준의 불명확성, 사회적 문제점 등의 위험성으로 투명하고 엄격한 관리가 필요하다.
| 객체 관계 데이터베이스 | |
|---|---|
| 데이터베이스 모델 | |
| 개요 | |
| 유형 | 데이터베이스 관리 시스템 |
| 특징 | |
| 주요 특징 | 객체 지향 프로그래밍의 특징을 관계형 데이터베이스에 통합 사용자 정의 데이터 유형 지원 복잡한 데이터 구조 처리 데이터베이스 내에서 객체 행동 정의 및 실행 |
| 장점 | |
| 장점 | 복잡한 데이터 모델링 가능 데이터 재사용성 및 유지보수성 향상 객체 지향 프로그래밍과의 호환성 기존 관계형 데이터베이스 기술 활용 가능 |
| 단점 | |
| 단점 | 복잡성 증가로 인한 개발 및 관리 비용 증가 성능 저하 가능성 객체-관계 간 임피던스 불일치 문제 발생 가능성 |
| 구현 | |
| 구현 방법 | 관계형 데이터베이스에 객체 지향 기능을 추가 객체 지향 데이터베이스에 관계형 기능을 추가 |
| 표준 | |
| 표준 | SQL 표준에 객체 지향 기능 추가 |
| 예시 | |
| 예시 데이터베이스 | 오라클 Db2 PostgreSQL SAP HANA |
2. 역사
객체 관계 데이터베이스 관리 시스템(ORDBMS)은 1990년대 초반에 이루어진 연구에서 발전했다. 이 연구는 기존의 관계형 데이터베이스 개념에 객체 개념을 추가하여 확장했다. 연구자들은 아키텍처의 핵심 구성 요소로 술어 미적분에 기반한 선언적 쿼리 언어를 유지하는 것을 목표로 했다.[6] 아마도 가장 주목할 만한 연구 프로젝트인 포스트그레스(캘리포니아 대학교 버클리)는 해당 연구에서 파생된 두 개의 제품, Illustra와 PostgreSQL을 낳았다.
객체 관계형 데이터베이스의 기본적인 목표는 관계형 데이터베이스와 객체 지향 프로그래밍 기술 간의 간극을 메우는 것이다. 이러한 기술은 자바, C++, Visual Basic(.NET) 또는 C#과 같은 프로그래밍 언어에서 사용된다. 그러나 이러한 다리를 건설하기 위한 더 널리 사용되는 대안은 객체 관계형 매핑(ORM) 소프트웨어를 사용하는 표준 관계형 데이터베이스 시스템을 이용하는 것이다. 기존의 RDBMS는 제한된 데이터 유형 집합(관련 언어 표준에 의해 정의됨)에서 추출된 데이터의 효율적인 관리에 중점을 두었지만, 객체 관계형 DBMS를 통해 소프트웨어 개발자는 자체 유형과 해당 유형에 적용되는 메서드를 DBMS에 통합할 수 있다.[2][3]
객체 관계형 데이터베이스는 관계형 데이터베이스와 객체 데이터베이스의 장점을 결합하여 단점을 극복하려는 시도에서 비롯되었다. 관계형 데이터베이스는 집합론을 기반으로 하여 효율적인 데이터 관리에 강점을 가지지만, 특정 응용 프로그램에는 최적화되지 않았다. 반면 객체 지향 데이터베이스는 컨테이너, 사용자 정의 데이터 유형, 중첩 객체 등을 지원하여 응용 프로그램과의 호환성을 높이지만, 수학적 기반이 부족하다.[2][3]
1990년대 중반에 초창기 상업용 제품이 등장했다. 여기에는 Illustra[5] (Informix Software에 인수되었고, 다시 International Business Machines (IBM)에 인수), Omniscience (Omniscience Corporation, Oracle Corporation에 인수되어 최초의 Oracle Lite가 됨), UniSQL (UniSQL, Inc., KCOM Group에 인수) 등이 포함되었다. 우크라이나 개발자 루슬란 자수킨(Ruslan Zasukhin), Paradigma Software, Inc.의 설립자는 1990년대 중반에 C++소프트웨어 개발 키트 (SDK)로 최초 버전의 발렌티나 데이터베이스(Valentina database)를 개발하여 출시했다. 다음 10년 동안 PostgreSQL은 상업적으로 실행 가능한 데이터베이스가 되었으며, ORDBMS 기능을 유지하는 여러 현재 제품의 기반이 되었다.
컴퓨터 과학자들은 이러한 제품을 "객체 관계 데이터베이스 관리 시스템" 또는 ORDBMS라고 부르게 되었다.[6]
초기 객체 관계 데이터베이스 노력의 많은 아이디어가 SQL:1999에 구조적 타입을 통해 대부분 통합되었다. 실제로 SQL:1999의 객체 지향적 측면을 준수하는 모든 제품은 객체 관계 데이터베이스 관리 제품으로 설명될 수 있다. 예를 들어 IBM Db2, Oracle Database, Microsoft SQL Server는 이 기술을 지원한다고 주장하며, 다양한 성공을 거두고 있다.
3. RDBMS와의 비교
ORDBMS(ODBMS 또는 OODBMS)는 객체 지향 프로그래밍 언어와 통합된다. ORDBMS의 특징적인 속성은 복합 데이터, 유형 상속, 객체 동작이다. 대부분의 SQL ORDBMS에서 ''복합 데이터'' 생성은 사용자 정의 유형(UDT)을 통한 스키마 정의를 기반으로 한다. 구조화된 복합 데이터 내의 계층 구조는 ''유형 상속''이라는 추가 속성을 제공한다. 즉, 구조화된 유형은 모든 속성을 재사용하고 하위 유형에 특정된 추가 속성을 포함하는 하위 유형을 가질 수 있다. 또 다른 장점인 ''객체 동작''은 프로그램 객체에 대한 접근과 관련이 있다. 이러한 프로그램 객체는 데이터베이스 처리를 위해 저장 및 전송 가능해야 하므로 일반적으로 영속 객체라고 한다. 데이터베이스 내에서 영속 프로그램 객체와의 모든 관계는 해당 객체 식별자(OID)와의 관계이다. 이러한 모든 사항은 적절한 관계형 시스템에서 처리할 수 있지만, SQL 표준 및 해당 구현은 임의의 제한과 추가적인 복잡성을 부과한다.[4]
객체 지향 프로그래밍(OOP)에서 객체 동작은 메서드(객체 함수)를 통해 설명된다. 하나의 이름으로 표시된 메서드는 매개변수의 유형과 해당 메서드가 연결된 객체의 유형(메서드 시그니처)으로 구분된다. OOP 언어는 이것을 다형성 원리라고 부르며, 이는 간단히 "하나의 인터페이스, 여러 구현"으로 정의된다. 다른 OOP 원리인 상속 및 캡슐화는 메서드와 속성 모두와 관련이 있다. 메서드 상속은 유형 상속에 포함된다. OOP의 캡슐화는, 예를 들어 `public`, `private` 및 `protected` 접근 제한자를 통해 선언된 가시성 정도이다.
RDBMS는 일반적으로 다음과 같은 SQL 구문을 포함한다.
```sql
CREATE TABLE Customers (
Id CHAR(12) NOT NULL PRIMARY KEY,
Surname VARCHAR(32) NOT NULL,
FirstName VARCHAR(32) NOT NULL,
DOB DATE NOT NULL -- DOB: 생년월일
);
SELECT InitCap(C.Surname) || ', ' || InitCap(C.FirstName)
FROM Customers C
WHERE Month(C.DOB) = Month(getdate())
AND Day(C.DOB) = Day(getdate())
```
대부분의 SQL 데이터베이스는 사용자 정의 함수를 만들 수 있으며, 쿼리는 다음과 같이 표시될 수 있다.
```sql
SELECT Formal(C.Id)
FROM Customers C
WHERE Birthday(C.DOB) = Today()
```
객체 관계형 데이터베이스에서는 사용자 정의 데이터 형식과 `BirthDay()`와 같은 표현식을 사용하여 다음과 같은 구문을 볼 수 있다.
```sql
CREATE TABLE Customers (
Id Cust_Id NOT NULL PRIMARY KEY,
Name PersonName NOT NULL,
DOB DATE NOT NULL
);
SELECT Formal( C.Id )
FROM Customers C
WHERE BirthDay ( C.DOB ) = TODAY;
```
객체 관계형 모델은 데이터 간의 관계를 사용하여 관련 레코드를 쉽게 수집할 수 있다는 또 다른 장점을 제공할 수 있다. 주소록 응용 프로그램에서 각 고객에 대한 0개 이상의 주소를 저장하기 위해 위의 테이블에 추가 테이블이 추가된다. 기존 RDBMS를 사용하면 사용자와 해당 주소에 대한 정보를 모두 수집하려면 "조인"이 필요하다.
```sql
SELECT InitCap(C.Surname) || ', ' || InitCap(C.FirstName), A.city
FROM Customers C JOIN Addresses A ON A.Cust_Id=C.Id -- 조인
WHERE A.city="New York"
```
객체 관계형 데이터베이스의 동일한 쿼리는 더 간단하게 나타난다.
```sql
SELECT Formal( C.Name )
FROM Customers C
WHERE C.address.city="New York" -- ORDB에서 '이해'되는 연결
4. 핵심 기능
객체 관계형 데이터베이스의 주요 목표는 관계형 데이터베이스와 객체 지향 프로그래밍 기술 간의 간극을 메우는 것이다. 이를 위해 객체 관계형 매핑(ORM) 소프트웨어를 사용하는 대신, 객체 관계형 DBMS는 소프트웨어 개발자가 자체 유형과 메서드를 DBMS에 통합할 수 있도록 한다.
ORDBMS (ODBMS 또는 OODBMS)는 객체 지향 프로그래밍 언어와 통합되며, 복합 데이터, 유형 상속, 객체 동작을 특징으로 한다. 이러한 특징들은 관계형 시스템에서도 처리 가능하지만, SQL 표준 및 구현에는 제약과 복잡성이 따른다.[4]
객체 지향 프로그래밍(OOP)에서 객체 동작은 메서드(객체 함수)를 통해 설명되며, 다형성, 상속, 캡슐화 등의 원리가 적용된다.
RDBMS (관계형 데이터베이스 관리 시스템)에서는 SQL 문을 사용하여 데이터를 처리한다. 예를 들어, 고객 정보를 저장하고 조회할 수 있다.
```sql
CREATE TABLE Customers (
Id CHAR(12) NOT NULL PRIMARY KEY,
Surname VARCHAR(32) NOT NULL,
FirstName VARCHAR(32) NOT NULL,
DateOfBirth DATE NOT NULL
)
```
```sql
SELECT InitCap(Surname) || ', ' || InitCap(FirstName)
FROM Customers
WHERE Month(DateOfBirth) = Month(getdate())
AND Day(DateOfBirth) = Day(getdate())
```
사용자 정의 함수를 사용하면 위 쿼리를 다음과 같이 다시 작성할 수 있다.
```sql
SELECT Formal(Id)
FROM Customers
WHERE Birthday(Id) = Today()
```
ORDBMS에서는 사용자 정의 데이터 타입과 식을 정의하여 더욱 간결하게 표현할 수 있다.
```sql
CREATE TABLE Customers (
Id Cust_Id NOT NULL PRIMARY KEY,
Name PersonName NOT NULL,
DateOfBirth DATE NOT NULL
)
```
```sql
SELECT Formal( C.Name )
FROM Customers C
WHERE BirthDay ( C.DateOfBirth ) = TODAY;
```
ORDBMS는 데이터 간의 관계를 활용하여 관련 데이터를 쉽게 추적할 수 있다. 예를 들어, 주소록 애플리케이션에서 인물과 주소 데이터를 검색하는 쿼리는 다음과 같이 작성할 수 있다.
```sql
SELECT InitCap(C.Surname) || ', ' || InitCap(C.FirstName), A.city
FROM Customers C, Addresses A
WHERE A.Cust_Id = C.Id -- 조인
AND A.city = 'New York'
```
```sql
SELECT Formal( C.Name )
FROM Customers C
WHERE C.address.city = 'New York' -- 관계는 ORDBMS에 의해 "인식"된다
4. 1. 복합 데이터
대부분의 SQL ORDBMS에서 ''복합 데이터'' 생성은 사용자 정의 유형(UDT)을 통한 예비 스키마 정의를 기반으로 한다.[4] 구조화된 복합 데이터 내의 계층 구조는 ''유형 상속''이라는 추가 속성을 제공하는데, 이는 구조화된 유형이 모든 속성을 재사용하고 하위 유형에 특정된 추가 속성을 포함하는 하위 유형을 가질 수 있음을 의미한다.[4]
4. 2. 자료형 상속
객체 관계형 데이터베이스의 기본적인 목표는 관계형 데이터베이스와 객체 지향 모델링 기술 간의 격차를 해소하는 것이다. 이러한 기술은 자바, C++, Visual Basic(.NET) 또는 C#과 같은 프로그래밍 언어에서 사용된다. ORDBMS(예: ODBMS 또는 OODBMS)는 객체 지향 프로그래밍 언어와 통합된다. ORDBMS의 특징적인 속성은 복합 데이터, 유형 상속, 객체 동작이다.[4]
대부분의 SQL ORDBMS에서 ''복합 데이터'' 생성은 사용자 정의 유형(UDT)을 통한 예비 스키마 정의를 기반으로 한다. 구조화된 복합 데이터 내의 계층 구조는 ''유형 상속''이라는 추가 속성을 제공한다. 즉, 구조화된 유형은 모든 속성을 재사용하고 하위 유형에 특정된 추가 속성을 포함하는 하위 유형을 가질 수 있다.
4. 3. 객체 동작
객체 지향 프로그래밍(OOP)에서 객체 동작은 메서드(객체 함수)를 통해 설명된다. 하나의 이름으로 표시된 메서드는 매개변수의 유형과 해당 메서드가 연결된 객체의 유형(메서드 시그니처)으로 구분된다. OOP 언어는 이것을 다형성 원리라고 부르며, 이는 간단히 "하나의 인터페이스, 여러 구현"으로 정의된다. 다른 OOP 원리인 상속 및 캡슐화는 메서드와 속성 모두와 관련이 있다. 메서드 상속은 유형 상속에 포함된다. OOP의 캡슐화는, 예를 들어 public, private 및 protected 접근 제한자를 통해 선언된 가시성 정도이다.
참조
[1]
간행물
Data Integration Glossary
http://isddc.dot.gov[...]
Department of Transportation
2001-08
[2]
간행물
A Gentle Introduction to Relational and Object Oriented Databases
https://www.cl.cam.a[...]
[3]
간행물
Technical Paper Review
http://home.iitk.ac.[...]
2015-10-05
[4]
간행물
The Third Manifesto
[5]
서적
Object–Relational DBMSs: The Next Great Wave
Morgan Kaufmann Publishers
[6]
문서
[7]
서적
Object-Relational DBMSs: The Next Great Wave
Morgan Kaufmann Publishers
[8]
문서
[9]
간행물
Data Integration Glossary
http://isddc.dot.gov[...]
Department of Transportation
2001-08
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com