객체-관계 데이터베이스
Object–relational database오브젝트 릴레이셔널 데이터베이스(ORD) 또는 오브젝트 릴레이셔널 데이터베이스 관리 시스템(ORDBMS)은 릴레이셔널 데이터베이스와 유사하지만 오브젝트 지향 데이터베이스 모델을 사용하여 오브젝트, 클래스 및 상속이 데이터베이스 스키마와 쿼리 언어로 직접 지원됩니다.또한 순수 관계형 시스템과 마찬가지로 맞춤형 데이터 유형 및 방법을 사용하여 데이터 모델을 확장할 수 있습니다.

객체-관계 데이터베이스는 관계형 데이터베이스와 객체 지향 데이터베이스 사이의 중간 기반을 제공한다고 할 수 있다.객체-관계형 데이터베이스에서 접근방식은 본질적으로 관계형 데이터베이스의 접근방식이다. 데이터는 데이터베이스에 상주하며 쿼리 언어의 쿼리와 함께 집합적으로 조작된다. 다른 극단적인 접근방식은 OODB이다.MS에서는 데이터베이스가 오브젝트 지향 프로그래밍 언어로 작성된 소프트웨어의 영속적인 오브젝트 스토어이며 오브젝트 저장 및 취득을 위한 프로그래밍 API가 있으며 쿼리에 대한 특정 지원은 거의 또는 전혀 없습니다.
개요
객체-관계형 데이터베이스의 기본적인 요구는 관계형 데이터베이스와 객체 데이터베이스 모두 각각의 장점과 단점을 가지고 있다는 사실에서 비롯됩니다.수학적 관계를 갖는 관계형 데이터베이스 시스템의 동형성은 집합론으로부터 많은 유용한 기술과 이론을 이용할 수 있게 한다.그러나 이러한 유형의 데이터베이스는 특정 애플리케이션에는 적합하지 않습니다.객체 지향 데이터베이스 모델을 사용하면 세트 및 목록, 임의의 사용자 정의 데이터 유형 및 중첩된 객체와 같은 컨테이너를 사용할 수 있습니다.이것에 의해, 애플리케이션 타입의 시스템과 데이타베이스 타입의 시스템에 공통성이 생겨, 임피던스의 미스매치의 문제가 해소됩니다.그러나 관계형 데이터베이스와 달리 객체 데이터베이스는 심층 [2][3]분석을 위한 수학적 근거를 제공하지 않습니다.
오브젝트 관계형 데이터베이스의 기본 목표는 관계형 데이터베이스와 Java, C++, Visual Basic 등의 프로그래밍 언어에서 사용되는 오브젝트 지향 모델링 기술 간의 갭을 메우는 것입니다.NET 또는 C#.단, 이러한 브릿지를 실현하기 위한 보다 일반적인 대안은 표준 릴레이셔널 데이터베이스 시스템과 객체-관계 매핑(ORM) 소프트웨어를 사용하는 것입니다.기존의 RDBMS 또는 SQL-DBMS 제품이 한정된 데이터 유형(관련 언어 표준으로 정의)에서 도출된 데이터의 효율적인 관리에 중점을 둔 반면, 객체 관계형 DBMS를 사용하면 소프트웨어 개발자는 자신의 유형과 이에 적용되는 방법을 DBMS에 통합할 수 있습니다.
ORDBMS(ODBMS 또는 OODBMS)는 객체 지향 프로그래밍 언어와 통합됩니다.ORDBMS의 특징적인 속성은 1)복잡한 데이터, 2)유형 상속, 3)객체 동작입니다.대부분의 SQL ORDBMS에서 복잡한 데이터 생성은 UDT(사용자 정의 유형)를 통한 예비 스키마 정의에 기반합니다.구조화된 복합 데이터 내의 계층은 추가 속성인 유형 상속을 제공합니다.즉, 구조화 유형에는 모든 속성을 재사용하고 해당 하위 유형에 고유한 추가 속성을 포함하는 하위 유형이 있을 수 있습니다.또 다른 장점인 객체 동작은 프로그램 객체에 대한 액세스와 관련이 있습니다.이러한 프로그램 개체는 데이터베이스 처리를 위해 저장 및 전송 가능해야 하므로 일반적으로 영구 개체로 이름이 지정됩니다.데이터베이스 내에서 영속적인 프로그램 객체와의 모든 관계는 객체 식별자(OID)와의 관계입니다.SQL 표준과 그 구현에 의해 자의적인 제약과 복잡성이[4][page needed] 가중되고 있지만, 이러한 모든 포인트는 적절한 관계형 시스템에서 해결할 수 있습니다.
객체 지향 프로그래밍(OOP)에서 객체 동작은 메서드(객체 함수)를 통해 기술됩니다.하나의 이름으로 나타나는 메서드는 파라미터 유형 및 연결된 오브젝트 유형(메서드 시그니처)으로 구분됩니다.OOP 언어에서는 이것을 다형성 원리라고 부릅니다.이것은 간단히 "하나의 인터페이스, 다수의 구현"으로 정의됩니다.다른 OOP 원칙인 상속과 캡슐화는 메서드와 속성 모두에 관련되어 있습니다.메서드 상속은 유형 상속에 포함됩니다.OOP에서의 캡슐화는 예를 들어 다음과 같이 선언된 가시성 수준입니다.public
,private
그리고.protected
액세스 수식자
역사
객체-관계형 데이터베이스 관리 시스템은 1990년대 초에 이루어진 연구에서 발전했습니다.이 연구에서는 객체 개념을 추가하여 기존 관계형 데이터베이스 개념을 확장했습니다.연구진은 술어 미적분에 기초한 선언적 질의 언어를 건축의 중심 요소로서 유지하는 것을 목표로 했다.아마도 가장 주목할 만한 연구 프로젝트인 Postgres(UC Berkeley)는 그 연구의 계보를 추적하는 두 가지 제품을 생산했다: Illustra와 PostgreSQL.
1990년대 중반, 초기 상업용 제품이 등장했다.여기에는 Illustra(Illustra Information Systems, IBM에 인수된 Informix Software), Omniscience(Oracle Corporation, Oracle Corporation, Original Oracle Lite가 됨), UniSQL(KCOMS에 인수된 UniSQL, Inc.) 등이 포함됩니다[5].Paradigma Software, Inc.의 설립자인 우크라이나 개발자 Ruslan Zasukhin은 1990년대 중반에 C++ SDK로 발렌티나 데이터베이스의 첫 버전을 개발하여 출하했습니다.다음 10년 동안, Postgre는SQL은 상업적으로 이용 가능한 데이터베이스가 되었으며 ORDBMS 기능을 유지하는 여러 현재 제품의 기반이 되고 있습니다.
컴퓨터 과학자들은 이러한 제품을 "객체-관계형 데이터베이스 관리 시스템" 또는 ORDBMS라고 [6]부릅니다.
초기의 객체 관계형 데이터베이스 작업 아이디어의 대부분은 구조화 유형을 통해 SQL:1999에 통합되었습니다.실제로 SQL:1999의 객체 지향적 측면을 고수하는 제품은 객체 관계형 데이터베이스 관리 제품이라고 할 수 있습니다.예를 들어, IBM DB2, Oracle 데이터베이스 및 Microsoft SQL Server는 이 기술을 지원하며 다양한 성공률을 자랑합니다.
RDB와의 비교씨
RDBMS에는 일반적으로 다음과 같은 SQL 문이 포함될 수 있습니다.
만들다 테이블 고객들. ( 아이디 문자(12) 것은 아니다. 특수한 순서 기본적인 열쇠, 성 바샤르(32) 것은 아니다. 특수한 순서, 이름 바샤르(32) 것은 아니다. 특수한 순서, DOB 날짜. 것은 아니다. 특수한 순서 # DOB: 생년월일 ); 선택한다. InitCap(성) ', ' InitCap(이름) 부터 고객들. 어디에 달(DOB) = 달(날짜를 취득하다()) 그리고. 요일(DOB) = 요일(날짜를 취득하다())
대부분의 최신 SQL 데이터베이스에서는[update] 커스텀 함수를 작성할 수 있습니다.이것에 의해, 쿼리는 다음과 같이 표시됩니다.
선택한다. 공식적인.(아이디) 부터 고객들. 어디에 생일(DOB) = 오늘은()
객체 관계형 데이터베이스에서는 다음과 같은 사용자 정의 데이터 유형 및 표현식을 볼 수 있습니다.BirthDay()
:
만들다 테이블 고객들. ( 아이디 고객 ID 것은 아니다. 특수한 순서 기본적인 열쇠, 이름. 개인명 것은 아니다. 특수한 순서, DOB 날짜. 것은 아니다. 특수한 순서 ); 선택한다. 공식적인.( C.아이디 ) 부터 고객들. C 어디에 생일 ( C.DOB ) = 오늘은;
객체-관계 모델은 데이터베이스가 데이터 간의 관계를 활용하여 관련 기록을 쉽게 수집할 수 있다는 또 다른 이점을 제공할 수 있습니다.주소록 어플리케이션에서는 위의 테이블에 테이블이 추가되어 각 고객의 주소를 0개 이상 유지합니다.종래의 RDBMS 를 사용하고, 유저와 그 주소의 양쪽 모두의 정보를 수집하려면 , 「참가」가 필요합니다.
선택한다. InitCap(C.성) ', ' InitCap(C.이름), A.도시 부터 고객들. C 합류하다 주소 A 온 A.고객 ID=C.아이디 -- 가입 어디에 A.도시='뉴욕'
오브젝트 릴레이셔널 데이터베이스에서도 같은 쿼리가 보다 간단하게 표시됩니다.
선택한다. 공식적인.( C.이름. ) 부터 고객들. C 어디에 C.주소..도시='뉴욕' -- ORDB는 링크를 '이해'합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Data Integration Glossary (PDF), US: Department of Transportation, August 2001, archived from the original (PDF) on 2016-09-24, retrieved 2014-03-08
- ^ Frank Stajano (1995), A Gentle Introduction to Relational and Object Oriented Databases (PDF)
- ^ Naman Sogani (2015), Technical Paper Review (PDF), archived from the original (PDF) on 2016-03-04, retrieved 2015-10-05
- ^ Date, Christopher ‘Chris’ J; Darwen, Hugh, The Third Manifesto
- ^ 스톤브레이커.마이클과 무어, 도로시오브젝트 - 관계형 DBMS: 차세대 대파도.모건 카우프만 출판사, 1996년ISBN 1-55860-397-2.
- ^ 당시 이 용어가 일러스트라의 마이클 스톤브레이커나 유니SQL의 원킴에 의해 만들어진 것인지 논란이 있었다.
외부 링크

- 를 클릭합니다Savushkin, Sergey (2003), A Point of View on ORDBMS, archived from the original on 2012-03-01, retrieved 2012-07-21.
- JPA Performance Benchmark – Java JPA ORM 제품 비교(Hibernate, EclipseLink, OpenJPA, DataNucleus).
- PolePosition Benchmark – 는 객체-관계 임피던스 불일치 컨텍스트에서 솔루션의 성능 트레이드오프를 나타냅니다.