객체 지향 데이터베이스가 관계형 데이터베이스만큼 사용되지 않는 이유는 무엇입니까? [닫은]


18

많은 관계형 데이터베이스 관리 시스템 (RDBMS)을 접했습니다. 그러나 최근에는 최대 절전 모드를 사용하여 Object Oriented 데이터베이스가 왜 인기가 없는지 궁금해졌습니다.

Java 나 C #과 같은 객체 지향 언어가 그렇게 대중적이라면 왜 객체 지향 데이터베이스 관리 시스템 (OODBMS)이 더 대중적이지 않습니까?


1
"NoSQL"접근 방식은 현재 매우 인기가 있습니다. RDBMS는 제한적이고 제한적이며 다행스럽게도 현재는 빠르게 기반을 잃고 있습니다.
SK-logic

oodb로 무엇을 말합니까? 최대 절전 모드는 oo 인터페이스를 사용하여 rdbms와 통신하는 프레임 워크 일뿐입니다.
Simon Bergot

2
비슷한 질문이 2009 년에 SO에 대해 질문되었습니다. stackoverflow.com/questions/1350044/… IMHO는 거의 모든 대답이 오늘날에도 여전히 유효합니다.
Doc Brown

OODB에 의해 @ 사이먼, 내 말은 객체 지향 데이터베이스

1
@Simon : Versant는 oodb입니다 (두 회사에서 생산 한 것을 보았습니다).
Giorgio

답변:


11

여러 가지 이유가 있습니다.

  1. 많은 개발자들이 관계형 데이터 모델링 경험이 있습니다. OO 데이터베이스를 사용하려면 데이터를 모델링하고 생각하는 완전히 다른 방법을 배워야합니다. 이것은 정말 어렵거나 시간이 많이 걸립니다.
  2. 관계형 DB는 성숙하는 데 많은 시간이있었습니다. 무료 관계형 DB조차도 고급 최적화 및 인덱싱 기술이 있습니다. 또한 관계형 데이터는 저장 및 색인화가 쉽습니다. OO 데이터베이스에 대해서도 마찬가지입니다.
  3. 관계형 및 OO 모델이 등장하기 시작했을 때. Relational은 수학적으로 "정확한"것으로 큰 장점을 가지고 있으며 데이터 저장 및 쿼리에 대한 표준을 갖추고 있습니다. OO는 아무 것도 없었습니다.
  4. 많은 사람들이 관계형 DB를 만드는 데 많은 자원을 투입합니다. 대신 OO DB를 지원하는 것이 비생산적입니다. 그 중 많은 사람들이 OO 원칙을 관계형 모델에 통합하여 최신 DB를 소위 객체 관계형으로 만드는 데 투자했습니다. IMO이 모델은 순수한 관계형 또는 순수한 OO보다 최악입니다. [/ speculation]
  5. [rant] 마지막으로 주목해야 할 것은 많은 개발자들이 데이터를 모델링하는 OO 방식을 실제로 이해하지 못한다는 것입니다. 이것은 일반적으로 최적이 아닌 빈혈 모델을 초래합니다. 싸고 경험이 부족한 개발자에게 의존하는 많은 개발 회사는 간단하고 관계없는 모델을 선택하고, 모든 CS 대학에서 강의하고 입증되지 않은 OO 어프로치를 선택하는 것보다 가르치는 것입니다. [/ rant]

5
나는 마지막을 제외한 모든 요점에 동의합니다. 개발자가 객체 데이터베이스보다 관계형 데이터베이스를 더 쉽게 망칠 수 있다고 생각합니다. 복합 키와 깨진 관계는 매우 일반적이지만 클래스 계층 구조를 엉망으로 만드는 것이 조금 더 어려워 보입니다.
Tjaart

@Tjaart는 클래스 계층 구조를 망쳐 놓는 것이 OO의 대부분의 개발자에게 일반적인 것으로 보입니다.
굽은

10

데이터베이스가 처음 나타 났을 때 OOP는 여전히 프로그래밍 방법이 아니 었습니다. 반면 관계형 데이터베이스는 많은 관심을 끌었습니다. 그리고 IBM이 80 년대에 도입 한 SQL 은 모든 데이터베이스의 링구아 프랑카 가되었습니다 .

OOP가 대중화되면 몇 가지 시도가 있었지만 몇 가지 문제가 있습니다. 첫째, 진정한 OODBMS는 실제로 구현하기가 어렵습니다. 관계형 데이터베이스의 경우 테이블 및 관련 인덱스는 매우 간단한 구조 (예 : B- 트리)입니다. 또 다른 이유는 관계형 모델 뒤에 많은 이론이 있다는 것입니다. 그것은 수학적 이론에서 직접 도출 된 것입니다. 관계형 데이터베이스를 올바르게 설계하는 방법은 알려져 있습니다 (정규화 등). 마지막으로, 사람들은 이미 SQL에 많이 익숙해졌습니다.

대부분의 경우 최신 NoSQL 솔루션은 실제로 OODBMS를 향한 단계가 아닙니다. 그들 중 많은 사람들이 여전히 관계형이며 단지 제거 JOINs됩니다. 실제로 객체 저장소는 거의 없지만 객체 간의 관계를 알지 못하기 때문에 실제로 OODBMS가 아닙니다.

OODBMS에 대한 그러한 강력한 추진이없는 또 다른 이유는 "가난한 사람의 OODBMS"솔루션 인 ORM이 있기 때문입니다. 이것은 잘 알려져 있고 안정적이며 테스트를 거친 DB 엔진의 지원을 받아 큰 인기를 얻었지만 객체에 대한 매핑을 제공합니다. 물론 이들은 실제 OODB가 아닙니다.


"그렇지만 OODBMS에 대한 강력한 추진이없는 또 다른 이유는"가난한 OODBMS "솔루션 – ORM이 있기 때문입니다.": 아주 좋은 지적입니다! +1.
Giorgio

그건 사실이 아니야. MUMPS는 1966 년에 설계되었으며 1974 년까지만 세계 최초의 RDBMS 인 System R을 개발하기 위해 IBM이 첫 번째 연구 프로젝트를 시작했습니다. 오라클은 InterSystems M이 등장한 해인 1979 년에 세계 최초의 상용 급 RDBM 만 출시했습니다. 문제는 그 이후에 일어난 일입니다. 대답은 아마도 ODBMS가보고에 최적화되지 않았으며 LOB 응용 프로그램의 대부분의 사용 사례는 읽기에 대한 읽기 / 쓰기 불균형이 심하다는 것입니다.
Alexey Zimarev

-2

OODBMS는 복잡한 데이터 저장에 능숙합니다. 그러나 대부분의 경우 OO 언어를 사용하는 경우에도 필요한 데이터는 비교적 간단합니다. 따라서 전통적인 RDBMS가 더 적합합니다.


2
데이터는 거의 결코 단순하지 않으며 모든 ORM이 매우 잘 수행되고 있기 때문에 OODB가 왜 인기가 없는지 설명하지 못하는 것 같습니다.
Tjaart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.