문제

배경: 좋아, 그래서 나는 객체 데이터베이스라고 생각하는 것을 찾고 있습니다. 그러나 내가 보았던 (적은 소수의) 객체 데이터베이스는 단순한 지속성 계층이며 본격적인 DBMS가 아닙니다. 내가 찾고있는 것이 객체 데이터베이스로 간주되는지 모르겠으므로 실제로 올바른 방향으로 나를 지적하는 데 도움이 될 것입니다.


내가 찾고있는 것을 설명하는 두 페이지를주고 싶지 않으므로 요점을 설명하기 위해 예제를 사용하겠습니다. 저장해야 할 "블로그 포스트"객체가 있다고 가정 해 봅시다. 유사 코드에서 이와 같은 것 :

class BlogPost
    title:String
    body:String
    author:User
    tags:List<String>
    comments:List<Comment>

(추정하다 Comment 자체 수업입니다.)

이제 관계형 데이터베이스에서 author 외국 키로 저장 될 것입니다. User.id, 그리고 tags 그리고 comments 별도의 테이블을 사용하여 관계를 저장하기 위해 일대일 또는 다수의 관계로 저장됩니다. 내가 원하는 것은 다음을 수행하는 데이터베이스 엔진입니다.

  • 관련 개체를 저장author, tags, 추가 조회가 필요한 외래 키를 사용하는 대신 직접 참조가있는 등; 다시 말해, 서로 위에있는 객체는 데이터베이스에 의해 기본적으로 지원되어야합니다.
  • 전체 객체를 검색하고 업데이트 한 다음 데이터베이스에 다시 넣지 않고 블로그 게시물에 주석이나 태그를 추가 할 수 있습니다 (문서 지향 데이터베이스-CouchDB는 예제입니다).

내가 찾고있는 것은 항해 데이터베이스라고 생각하지만 모르겠습니다. 내가 생각하는 것과 원격으로 비슷한 것이 있습니까? 그렇다면 뭐라고 불리는가? (또는 더 나은 아직, 실제 작업 데이터베이스를 줘.) 아니면 너무 까다 롭습니까?


편집하다:

다시 한번 확인하기 위해, 나는 ORM을 찾고 있지 않습니다 또는 추상화 레이어 또는 그와 비슷한 것. 내부적으로 수행하는 실제 데이터베이스를 찾고 있습니다. 어렵다면 미안하지만 검색했는데 아무것도 찾을 수 없었습니다.


편집하다:

또한 JVM을위한 무언가가 우수 할 것이지만,이 시점에서 나는 그것이 어떤 플랫폼을 실행하는지에 신경 쓰지 않습니다.

도움이 되었습니까?

해결책

나는 당신이 묘사하는 것이 쉽게 모델링 될 수 있다고 생각합니다. 그래프 데이터베이스. 그런 다음 다른 것을 검색 할 필요없이 변경하려는 노드/에지로 탐색 할 수있는 이점을 얻습니다. JVM에는 다음이 있습니다 neo4j 오픈 소스 그래프 데이터베이스 (제가 팀의 일원). 당신은 그것에 대해 읽을 수 있습니다 높은 확장 성, 개요의 일부로 Thinkvitamin 또는에서 이 stackoverflow 스레드. 태그에 관해서는, 그래프 데이터베이스에 저장하면 관련 태그와 유사한 내용을 찾으려면 몇 가지 추가 장점을 제공 할 수 있다고 생각합니다. 그냥 라인을 떨어 뜨리십시오 메일 링리스트, 그리고 저는 커뮤니티가 당신을 도울 것이라고 확신합니다.

다른 팁

당신은 시험해 볼 수 있습니다 DB4O C# 및 Java에서 사용할 수 있습니다.

나는 우리가 이것을 찾고 있다고 생각합니다. http://www.odbms.org/. 이 사이트에는 객체 데이터베이스에 대한 좋은 정보가 있습니다. 객관성, 이것은 꽤 좋은 객체 데이터베이스입니다.

코끼리는 다음을 수행합니다. http://common-lisp.net/project/elephant/

정확히 당신이 설명한 내용은 (n) 일반 RDBM에서 실행되는 (n) 최대 절전 모드로 수행 할 수 있습니다.

일반 데이터베이스와 함께 이러한 지속성 계층을 사용하는 장점은 편리한 프로그래밍과 결합 된 표준 데이터베이스 시스템이 있다는 것입니다. 당신은 당신의 수업을 매우 자연스럽게 선언하고 (n) 최대 절전 모드는 betweeen 참조/목록과 외국의 주요 관계를 번역하는 방법을 제공합니다.

자바 튜토리얼 : http://docs.jboss.org/hibernate/stable/core/reference/en/html/tutorial-firstapp.html

.NET 튜토리얼 : https://web.archive.org/web/200812181310/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/04/01/yourst-nhibernate 기반-Application.aspx

잘 지원되는 표준 RDBM을 사용하고 싶지 않다고 주장하고 더 이국적이고 덜 심하게 테스트 된 것에 대한 데이터를 신뢰하려면 객체 관계형 데이터베이스.

그러나 이러한 제품은 어쨌든 표준 RDBMS의 레이어로 만들어서 가장 잘 구현 될 것입니다. 이것이 (N) Hibernate와 같은 ORM이 가장 인기있는 솔루션 인 이유 일 것입니다. 표준 RDBMS 소프트웨어 (및 광범위하게 사용 가능한 관리/사용자 기술)를 적용 할 수 있지만 프로그래밍 경험은 99% 객체 기반입니다.

이것이 바로 무엇입니다 LINQ 설계되었습니다.

Microsoft LINQ는 배열, 열거 가능한 클래스, XML (XLINQ), 관계형 데이터베이스 및 타사 데이터 소스의 쿼리, 프로젝트 및 필터 데이터에 사용할 수있는 독점 쿼리 연산자 세트를 정의합니다. 데이터 소스를 쿼리 할 수는 있지만 데이터를 객체로 캡슐화해야합니다. 따라서 데이터 소스가 기본적으로 데이터를 객체로 저장하지 않으면 데이터를 객체 도메인에 매핑해야합니다. 쿼리 연산자를 사용하여 작성된 쿼리는 LINQ 쿼리 처리 엔진에 의해 실행되거나 확장 메커니즘을 통해 별도의 쿼리 처리 엔진을 구현하거나 별도의 데이터 저장소에서 실행될 다른 형식으로 번역하는 LINQ 제공 업체에 전달됩니다. 데이터베이스 서버와 같은 SQL 쿼리 (DLINQ)). 쿼리 결과는 C#의 foreach와 같은 표준 반복 기능을 사용하여 열거 할 수있는 메모리 내 객체 모음으로 반환됩니다.

다양한 용어가 있으며 모두 연결되어 있습니다. 객체 관계 매핑, AKA ORM은 아마도 당신이 찾는 데 가장 유용한 것일 것입니다. ORM 라이브러리는 많은 프로그래밍 언어에 대해 존재합니다.

오라클 중첩 테이블 해당 기능의 일부를 제공하지만 업데이트에서는 중첩 테이블에 행을 추가 할 수는 없습니다. 중첩 된 전체 테이블을 교체해야합니다.

나는 당신이 ORM을 찾고있는 것 같아요 "EntityFirst" 접근하다.

EntityFirst 접근 방식에서 개발자는 데이터베이스와 관련하여 가장 적은 [전혀 관련이 없습니다. 엔터티 나 객체를 구축하면됩니다. 그런 다음 ORM은 엔티티를 데이터베이스에 저장하고 귀하의 의지에 따라 검색합니다.

유일한 엔터티 피어스트 orm witihn 내 지식 "시그널". 그것은 .net 위에 세워진 멋진 프레임 워크입니다. 비디오SignumFramework 웹 사이트와 나는 그것이 유용하다고 확신합니다.

링크 텍스트 : http://www.signumframework.com

감사.

아마도 Zodb? 좋은 소개 여기서 찾으십시오.http://www.ibm.com/developerworks/aix/library/au-zodb/

당신은 시험해 볼 수 있습니다 STSDB, db4o, perst ... C# 및 Java에서 사용할 수 있습니다.

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