객체 지향 데이터베이스가 (아직) 성공하지 못한 이유는 무엇입니까?[닫은]

StackOverflow https://stackoverflow.com/questions/170649

문제

그게 문제입니다.OODB가 실패한 이유나 오늘날 많은 시스템이 여전히 관계형 데이터베이스를 사용하는 이유를 하나만 설명하십시오.

도움이 되었습니까?

해결책

두 번 이상 대답 할 수 있습니까? 또 다른 이유는 관계형 DB가 수학의 강력한 토대를 가지고 있기 때문입니다. 관계의 정의에서 정상적인 형태에 이르기까지 이론은 견고합니다. 관계형 모델이 OO에 잘 매핑되지는 않지만 해당 모델의 이점과 안정성은 매핑 문제보다 중요합니다.

다른 팁

가장 큰 이유는 SQL입니다.애플리케이션 외부의 다른 컨텍스트에서 데이터베이스의 데이터를 사용할 수 있다는 것은 매우 유용하며 종종 개체 데이터베이스를 사용하면 데이터가 쉽게 쿼리할 수 없는 형식으로 저장됩니다.예를 들어 관계형 데이터베이스를 사용하면 데이터가 데이터 웨어하우스의 일부가 되거나 시스템 관리자 등이 쿼리할 수 있습니다.

"객체 데이터베이스"가 실제로 아무도없는 문제를 해결하기 때문이라고 생각합니다. 객체 그래프의 간단한 지속성을 위해, 대부분의 OO 환경에 내장 된 직렬화는 "충분하다". 데이터의 하위 집합에서 정교한 작업을 수행하려면 관계형 데이터베이스와 SQL이 완벽하게 맞습니다.

일부 프린지 애플리케이션 (메모리에 보관할 수 없지만 RDBMS 사용을 위해 관계가 단순화되지 않는 거대한 객체 그래프) 외에는 실제로 이러한 도구가 필요하지 않습니다.

OODB가 주류가 아니기 때문에 우리는 여전히 그들이 가진 성공을 고려해야합니다. 캐시와 Zope는 모두 널리 사용되지만 (상대적으로) 일부 표준에 의해 성공적인 것으로 간주됩니다.

아마도 OODB가 극적으로 유지하지 못한 가장 큰 이유는 OODB : PostgreSQL 및 Informix에서 잠재적 인 시장 공유를 취하는 하이브리드 객체 관계 시스템의 성공 때문일 것입니다.

나는 이것이 질문에 직접 대답하지는 않지만 방정식의 일부라고 생각합니다. 그러나 전반적으로, 나는 관계 데이터베이스를 지원하는 모멘텀과 심하게 뿌리 깊은 사고 과정이 사람들이 전환하기가 어렵다고 생각합니다. 현재 DB 직업은 관계 이론에서 거의 독점적으로 훈련을 받았으며, DB 전문가는 OODB를 피하는 데 매우 관심이 있으며 학계는 실무자들을 위해 DB 이론을 거의 독점적으로 독점적으로 가르칩니다.

대규모, 기업 DBA 및 주류 교수 및 커리큘럼까지 개발자를 넘어서 OODB를 관리 할 준비가되어있는 직원이 개발 측면에서 아무리 좋든 상관없이 대량의 호소력을 보지 못할 것이라고 생각합니다.

글쎄, 이상하다? 객체 지향 분석 및 설계의 천정과 같은 도메인 구동 설계를 향한 푸시가 있으며, ORM 시스템을 활용하여 객체를 지속시키는 엔터프라이즈 패턴이 있습니다. 응용 프로그램 디자인이 객체 지향적이고 도메인이 마음에 초점을 맞추면 OODB가 응용 프로그램에 큰 도움이된다는 것은 완전히 의미가 있습니다.

성숙과 흡수에 관한 문제 외에도 철학적 관점에서 OODB는 유익하거나 OO 적용으로 보일 것입니다. 스타터를 위해 해당 매핑 레이어를 유지할 필요가 없습니다.)

그러나 도메인 드라이브 설계를하지 않고 객체를 데이터 개체로 사용하고 저장된 Procs처럼 사용하지 않으면 실제로 얻을 수는 없습니다.)

RDBM은 (강력한 이론적 기초를 기반으로했으며, 훨씬 더 오랫동안 시장에 있었고, 많은 경우 OODB보다 더 충실하게 데이터를 모델링 할 수 있으며, OODBS보다 더 많은 DBA에 의해 사용할 수 있습니다). 그것이 관계 튜플의 형태로 한 가지 이유입니다.

필의 요점을 증폭시킬 수 있다면 : SQL의 표준화. OODB는 OQL과 같은 쿼리 언어를 시도했지만 진정한 표준을 따르지 않은 것 같습니다. 또한 쿼리 언어의 품질은 표준화 부족으로 인해 의심 스러웠습니다. 표준을 조성하는 경쟁.

한 가지 이유는 데이터베이스가 데이터에 관한 것이고 객체는 구조 및 알고리즘에 관한 것이기 때문입니다. 데이터를 가져 와서 수업에 포함 시키면 정적 구조로 관계와 작업을 특성화합니다. 반면에 데이터베이스는 데이터를 원자의 무결성을 방해하지 않고 다른 구조 (일반적으로 클래스와 함께)로 재 조립 될 수있는 원자 테이블 인스턴스로 데이터를 구조화하는 것에 관한 것입니다.

데이터베이스는 Hexahexaflexagons와 다소 유사합니다.

그리고 O/R- 매핑. 이를 통해 True OO-DBS와의 차이는 훨씬 작아지고, 위에서 언급 한 혜택은 유효합니다.

값 비싼 기술 결정은 기술 지식을 가진 사람들에 의해 내려지지 않습니다. 관계형 데이터베이스를 사용하는 회사는 OODBS의 위협을 느끼는 많은 사람들을 고용하여 학습을 피할 것입니다.

나는 두 가지 철학적 이유가 있다고 생각합니다.

첫째, 사람들은 전통적으로 지속성을 실제 기능과 분리하는 경향이 있습니다. 일단 당신이 물체의 "생명"을 제거하고 주로 지속성을 위해 그것을 유지하면, 그것은 기록이되고, 그것을 "생명이없는"데이터 객체로 취급하는 경향이 있습니다.

그 후, 사람들이 매우 유사한 것들의 큰 모음을 생각할 때, 그들은 객체보다는 테이블로 생각하기 시작합니다.

나는 O/r로 구별이 사라지기 시작한다고 생각합니다. 예를 들어, 최대 절전 모드를 사용하여 MySQL 데이터베이스에 정말 복잡한 클래스 계층을 덤프합니다. 그러나 프로젝트에 대한 성능 크리티컬 한 내용을 작성하지 않으므로 효율적으로 수행되지 않았다고 확신합니다.

OODB를 느리게 채택한 이유는 주로 관계형 SQL 데이터베이스를 더 인기 있고/또는 더 적절하게 만드는 몇 가지 주요 요소를 기반으로합니다. 순수한 객체 지향 데이터베이스는 이제 관계형 모델의 많은 단점을 극복하는 상태에 있지만 몇 가지 주요 부분이 누락되었습니다.

하나는 중앙 데이터베이스 관리에 대한 지원이 부족한 경향이 있지만, 이는 다양한 제품에서 빠르게 수정되고 있습니다.

두 번째 이유는 표준 쿼리 언어를 구현하는 시스템이 거의 없기 때문입니다. 대신 매장 내 데이터를 검색하고 조작하기 위해 프로그래밍 언어 또는 전문 쿼리 언어에 의존하기 때문입니다. NOSQL 기반 솔루션에 사용되는 프로그래머의 완전히 다른 사고 방식 위에 새로운 쿼리 언어를 배워야한다면 많은 사람들을위한 쇼 스토퍼입니다. 또한 대부분의 SQL 기반 / 관계형 데이터베이스는 이제 객체 지향 디자인을 지원하고 있으며 ORM과 같은 랩퍼가 선택한 프로그램 언어에서 쉽게 사용할 수없는 관계형 데이터베이스의 문제를 "우회"하는 데 사용하는 래퍼가 있습니다.

그러나 이러한 문제는 주로 기업 환경에 존재합니다. 소규모 장치에 내장 된 데이터베이스, 웹 사이트 저장소 및 항공 우주와 같은 분야에서는 매우 인기가 생겼으며 많은 경우 정기적 인 관계형 데이터베이스의 필요성을 완전히 대체했습니다.

미래가 무엇을 보유하고 있는지 누가 알 수 있습니까?

대부분의 언어에 의해 제공된 직렬화를 통해 객체 속성을 평평하게하여 RDBMS에 쉽게 저장할 수 있으며 유사하게 객체를 검색하는 것은 큰 문제가 아닙니다. 넓고 견고한 기초에는 여전히 OODBM의 사용을 방해하여 구현할 수 있습니다.

저는 현재이 작업을 마스터 논문 프로젝트로 수행하여 현재 RDBMS에서 일반적으로 사용되는 거의 모든 구성 요소를 지원하여 비선형 구조화 된 DBM을 제공하는 거의 모든 구성 요소를 지원하는 일반적인 프레임 워크를 제공 할 생각입니다. 공부하는 동안 나는 Java 및 .NET에만 OODBM을 사용하는 접근법 인 DB4O라는 프로젝트를 발견 했으므로 모든 유형의 플랫폼과 언어에 대한 일반적인 부족의 또 다른 이유가 될 수 있습니다.

나는 그것이 Oracle과 같은 큰 사람들이 관계형 데이터베이스에 투자했기 때문에 객체 지향 운동이 모멘텀을 얻고 있었기 때문이라고 생각합니다 ... Oracle / Microsoft가 큰 방식으로 투자하면 주류가 될 수 있습니다. '그렇게해야 할 강력한 이유가 있습니다 ... 많은 프로그래머의 삶을 단순화 할 것입니다 ... 그러나 "프로그래머를 더 간단하게 만드는 것"은 그들에게는 좋은 비즈니스 목표가 아닙니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top