문제

왜 관하여 데이터베이스보다 더 일반적 객체지향 데이타베이스?

을 경우 객체 지향 프로그래밍 패러다임이 너무 광범위하게,우리 안의 OODBMS?지 않을 수행하보다 더 나은 RDBMS+나/M?

도움이 되었습니까?

해결책

RDBMS가 인기를 유지 한 이유 중 하나는 기술이 확립되어 있고 잘 이해되며 여러 공급 업체가 지원하는 표준 언어 (SQL)를 가지고 있기 때문입니다. 또한 ODBC 및 JDBC와 같은 몇 가지 좋은 인터페이스가있어 다른 언어와 잘 연결됩니다. 안정적인 API는 기술을 지배적으로 유지하는 데 강력한 요소입니다.

대조적으로, OODBMS에 대한 명확한 모델은 없으며 표준 언어도 없으며 표준 API도 없습니다. 주요 공급 업체 구현을 통해 사실상 표준이 없습니다.

OODBMS 개념 ~할 것 같다 RDBMS+ORM보다 더 잘 수행하십시오. 전적으로 구현에 따라 다릅니다. 그러나 oodbms가 RDBM이 해결하는 데 능숙한 것과 동일한 문제를 해결하지 못한다는 것도 사실입니다. 데이터 관리 솔루션에 의해 시행되는 참조 무결성과 관계형 헤더가 있으면 일부 데이터 관리 작업이 훨씬 쉽습니다. 이러한 기능은 OODBMS 모델에 없습니다 (적어도 지금까지).

블로그에는 관계형 데이터베이스가 더 이상 사용되지 않지만 RDBM은 대부분의 데이터 관리 작업을위한 최고의 일반 목적 솔루션입니다.

다른 팁

가장 큰 문제는 본 적이 부족의 표준화.에 RDBMS,세계를 얻을 수 있습 꽤 멀리로 어떤 임의의 데이터베이스를 알고 있는 경우 SQL.그들은 기본적으로 모든 그것을 구현하는,사소한 변형이 있습니다.나도 몰라 하나의 기존 RDBMS 하지 않는 SQL:할 수 있는 거의 사용하"RDBMS"및"SQL"와 같은 의미로 쓰인다.

가장 가까운 것에 대한 OODBMS 은 아마도 OQL 된,완전한 오류입니다.

어떤 데이터베이스가 구현된 아주 많습니다.내가 사용하는 꽤 좋은 상업적인 OODBMS 몇 년 전만(2007 년,그리고 그것은 주요 버전 8 9)지 않도 지원에 대한 쿼리를 개체에 의해 그것의 이름입니다.매뉴얼 단순히 말했다는 이 부분의 OQL 그들은 하지 않았다면 주위를 아직입니다.(나는 확실하지 않다,하지만 당신할 수 있게 되었을 드롭 다운로 기본화 할 수 있다.)

대부분의 개체를 데이터베이스 봤어요 최근에어 인터페이스 보다는 오히려 쿼리가 같은 언어 OQL.시스템 내가 사용하는,예를 들어,지원(만!) Perl 및 VB,IIRC.제한하는 관객을 만 몇 개의 언어(또는 그들을 강제로 쓰기 래퍼로,우리는 않았)지 않고 승리하는 방법에 친구입니다.

이 때문에,거기 경쟁이고,따라서 아무도 쉽게 백업 계획입니다.는 경우에 데이터를 넣 MS-SQL 및 Microsoft 지원 중단할 수 있습니다 아마 데이터 덤프로레스와 포트 쿼리지 않고,너무 많은 문제입니다.(수 많은 작업이 많은 경우 쿼리,하지만 당신은 그것을 할 수 있습니다.그것은 고통이지만,기술적 도전입니다.) 또는 오라클,또는 MySQL,또는 많은 사람들이,상업 및 무료입니다.

그런 것이 존재하지 않으로 OODBMS:만약 당신이 사용하는 배,또는 그들을 그 방향으로는 당신이 당신에게 유용하지 않습,또는 당신은 그것을 찾을 수 없는 주요 기능은 당신이 필요할 수는 없습을 덤프하는 데이터로 경쟁 OODBMS 및 포 쿼리를 처리합니다.대신에,당신은 당신에 대해 얘기하고 변화하는 핵심 라이브러리고 거대한 건축물 변경합니다.그래서 현실적으로,당신은 제한 상업적인 OODBMS 누가 당신이 정말로 신뢰(수 있습니다 당신이 이름을 하나라도?), 또는 오픈 소스 OODBMS 신뢰할 수 있는 귀하의 팀을 유지하는 것을 나쁘다.

만약 이 같은 소리 FUD,sorry,내가 의도하지 않았다.그러나 나는 거기에서,그리고 프로젝트 관리 측면 나는 것을 망설이게 돌아가지만,프로그래밍할 수 있는 환경이 훌륭합니다.다른 방법으로 생각하는 것입니다:는 방법을 살펴 인기있는 기능 프로그래밍이 오늘 무엇에도 불구하고,좋은 생각입니다.OODBMS 같다,하지만 더 나쁜 이후,그것은 단지 당신의 코드,하지만 당신의 코드와 데이터를 저장합니다.내가 기꺼이 시작 중요한 프로젝트 패키지는 오늘날,하지만 나는 아직도 사용하는 것을 주저하는 OODBMS.

OODBMS 업체:이를 변경하려면 당신 쉽게 떠날 당신이 당신의 경쟁자.할 수 있습을 발굴 OQL 고 실제로 구현하는 것,또는 그것 API 수준에서 다음과 같 ODBC 입니다.심지어는 표준 형식으로 덤프를 사용하여(JSON?), 과 도구를 가져오기/내보내기/에서는 여러 가지 OODBMSs 한 시작입니다.

데이터는 종종 더 오래 살고 프로그램보다 중요합니다. 따라서 오늘 Greenfield 개발을 시작하더라도 전반적인 그림을 고려해야합니다. RDBM 시스템과 함께 일하는 더 많은 도구, 프로세스 및 숙련 된 사람들이 있습니다. 프로그램을 넘어서, 용량 계획, 데이터 마이닝,보고, ETL, 다른 데이터 소스와의 통합 등을 생각해보십시오. 회사가 다른 회사를 인수하고 프로그램에 모든 관계형 데이터를 가져 오는 것은 어떻습니까? RDBMS와 관련 도구는 매우 확고하고 입증되고 강력하여 다른 것을 사용하는 데 전략적 의미가 없습니다. 작은 틈새 시장에서는 아마도 일반적으로 아닐 수도 있습니다.

객체 데이터베이스에는 객체 그래프가 실제로 매우 깊을 수있는 지오메트리 EG CAD 시스템을 나타내는 것과 같은 문제에 대한 매우 멋진 틈새 시장이 있습니다. 대부분의 관계형 시스템에서 약 7 개의 테이블에 대한 성능 저하가 빠르게 저하되므로 CAD의 깊은 자체 참조 구조는 객체 데이터베이스에서 더 잘 수행됩니다.

그러나 재무 데이터와 같은 중요한 응용 프로그램은 관계 적 표현에 적합합니다. 관계형 모델은 확고한 수학적 기초를 가지고 있으며 SQL은 성공적이고 인기있는 언어입니다. 은행, 중개 및 보험 회사와 같은 금융 기관이 RDBMS에서 멀어 지도록 인센티브는 거의 없습니다.

3 위의 예제의 경우 OODBS 및 RDB는 매우 다를 수 있습니다. 특히 작은 양의 데이터로 작업하는 경우 한 번에 사소하게 모든 것을 메모리에 읽고 한 번에 모두 적을 수 있습니다. 그러나 궁극적으로 OODB는 매우 RDB와 같은 형식으로 데이터를 저장해야합니다. 그다지 다르지 않습니다.

응용 프로그램에 사용될 수있는 임의의 객체 그래프를 고려하십시오. 각 객체는 다른 여러 객체에서 참조 할 수 있습니다. 객체의 그래프를 저장하면 참조 할 때마다 객체를 반복적으로 저장하고 싶지 않습니다. 우선, 당신이 어떤 종류의 루프 또는 자체 참조가 있다면, 당신의 저장 객체 방법은 무한 루프로 들어갑니다. 그러나 일반적으로 공간 낭비입니다. 대신, 중요한 데이터 저장소는 저장되는 각 객체에 대한 고유 식별자를 선언해야합니다 (키, 일반적으로 rdbms 용어의 대리 키). 객체 유형과 키를 저장하는 서로 객체를 참조하는 객체는 전체 객체를 반복적으로 저장하지 않습니다. 따라서 우리는 비 RDB 객체 매장에서 외래 키를 재현했습니다.

다음으로, 우리는 다른 객체 (b)와 관련된 객체 목록 (A1, A2, A3 ...)을 저장하고 있다고 가정합니다. 우리는 이미 물체 자체를 두 번 저장하는 대신 키를 저장할 것이라고 확립했습니다. 그러나 객체 B에 객체 A1, A2, A3에 키를 저장합니까? 당신이 그들을 첫 번째 방법으로 저장하고 원하는 모든 A를 가지고 있다면, 당신은 관련 B를 빠르게 잡을 수 있습니다. 두 번째 방법은 사실입니다. 그러나 어느 쪽이든 일방적 인 거래입니다. 저장된 내용의 반대를 쿼리하려면 객체가 XML 또는 JSON으로 저장됩니다. 이는 대부분의 관련없는 정보를 통해 비효율적 인 구문 분석을 통해 각 파일에서 키를 찾습니다. 테이블의 열처럼 각 필드가 분리 된 형식으로 저장하는 것이 더 좋지 않습니까?

다수의 관계 또는 양방향으로 많은 객체를 찾아야하는 경우이 전략은 매우 비효율적입니다. 유일한 성능 솔루션은 헬퍼 객체를 만들어 관계를 저장하는 것입니다. 각 관계에 대해 하나의 파일과 함께 파일이 A의 키와 B 키로 구성되어 신속하게 찾을 수 있도록하는 것입니다. 우리는 방금 교차 참조 테이블을 재창조했습니다.

열, 고유 식별자 (키), 교차 참조 테이블이있는 테이블 ... 이는 객체를 효율적으로 검색 할 수있는 방식으로 저장하는 기본 요구 사항입니다. 흠 ... 친숙한 것처럼 들리나요? 관계형 데이터베이스는이 기능을 정확하게 제공합니다. 또한 여러 공급 업체가 수십 년 동안 가장 빠른 데이터 저장 및 검색을 제공하여 백업, 복제, 클러스터링, 쿼리 등을위한 최상의 도구를 제공했습니다. 그리고 궁극적으로 나는 RDBM이 기본적으로 효율적인 객체 저장 문제에 대한 정말 좋은 솔루션이라고 말합니다.

그렇기 때문에 최대 절전 모드와 같은 것이 존재하는 이유입니다. 효율적인 RDBMS 스토리지 시스템에 객체 지향 인터페이스를 넣는 것입니다. 다른 종류의 스토리지가 실제로 빛나는 곳은 다른 문제 영역입니다.

  • 모든 종류의 구조화되지 않은 문서 저장소 (블로그, 소스 제어 또는 행 및 열에 매핑 할 수없는 것)의 경우 다양한 NOSQL 데이터베이스가 이상적입니다.
  • 소스 제어의 Diffs와 같은 정체하기 쉽지만 의미있는 변화의 역사를 유지하는 것은 RDB에서는 실제로 예쁘지 않습니다. Datomic과 같은 것이 새로운 영역을 위조하고있을 수 있습니다.
  • 객체 그래프가 단순하거나 작을 때마다 데이터베이스의 오버 헤드가 필요하지 않을 수 있습니다.

OODBS는 근본적으로 다르지 않기 때문에 RDB보다 더 잘 수행 할 수 없습니다.
RDB는 저장 및 검색에 대한 공간 효율적이고 시간 효율적인 방식으로 큰 객체 그래프를 저장하고 결함 허용이며 데이터 무결성을 보장하는 것이 RDB가 해결하도록 설계된 문제이기 때문에 RDB는 여기에 있습니다. 첫 번째 장소. 이것이 바로 JPA와 최대 절전 모드가 여기에있는 이유입니다. 왜냐하면 그들은 객체와 관계형 데이터 모델 사이의 간격을 연결하기 때문입니다. 메모리 조작의 용이성을위한 객체 모델과 지속성을위한 관계형.

한마디로 상호 운용성 (금요일 밤에 큰 말u003CG> )

대부분의 비즈니스는 RDBM에서 실행되는 레거시 시스템과 협력해야합니다. 그들이 oodbms를 사용한다면, 특정 함수에 대해서도 여전히 RDBM에 액세스해야합니다. 데이터에 두 가지에 액세스하는 방법을 유지하는 것이 더 쉽습니다.

OODBMS 세계에는 Oracle 및 SQL Server와 같은 큰 이름을 가지고 있으며 다양한 환경에서 성능이 입증되면 더 많은 프로젝트를 사용하여이를 사용합니다.

나는 그것이 사례라고 생각합니다

부러지지 않으면 변경하지 마십시오.

관계형 데이터베이스는 매우 infled입니다.

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