문제

그래프 기반 데이터베이스의 차이점은 무엇입니까(http://neo4j.org/) 및 객체지향 데이터베이스(http://www.db4o.com/)?

도움이 되었습니까?

해결책

객체와 그래프 데이터베이스는 두 가지 다른 수준의 추상화에서 작동합니다.

객체 데이터베이스의 주요 데이터 요소는 객체 지향 프로그래밍 언어에서 우리가 알고있는 방식입니다.

그래프 데이터베이스의 기본 데이터 요소는 노드와 가장자리입니다.

객체 데이터베이스에는 자동 참조 무결성이있는 두 가지 사이에 (양방향) 모서리라는 개념이 없습니다. 그래프 데이터베이스에는 NULL이 될 수있는 포인터의 개념이 없습니다. (물론 하이브리드를 상상할 수 있습니다.)

스키마 측면에서 객체 데이터베이스의 스키마는 클래스 세트가 응용 프로그램의 모든 것입니다. 그래프 데이터베이스의 스키마 (문자열 라벨이 의미하는 내용의 규칙에 따라 또는 명시 적 또는 명시 적으로 모델로 선언하여 모델로 선언 함. infogrid 예를 들어)는 응용 프로그램과 무관합니다. 예를 들어 스키마가 응용 프로그램 독립적이기 때문에 객체 데이터베이스 대신 그래프 데이터베이스를 사용하여 동일한 데이터에 대해 여러 응용 프로그램을 작성하는 것이 훨씬 간단합니다. 반면에 그래프 데이터베이스를 사용하면 임의의 객체를 가져 와서 지속 할 수 없습니다.

내가 생각하는 다른 직업을위한 다른 도구.

다른 팁

예, API가 가장 큰 차이점처럼 보이지만 실제로는 피상적인 것은 아닙니다.개념적으로 개체 집합은 그래프를 형성하며 이 그래프를 균일한 방식으로 처리하는 API를 생각할 수 있습니다.반대로, 이론적으로는 패턴에 대한 일반 그래프 구조를 마이닝하고 이를 일부 API를 통해 노출된 개체에 매핑할 수 있습니다.그러나 실제 제품의 API 설계는 일반적으로 데이터가 실제로 저장되는 방식과 쿼리할 수 있는 방식에 영향을 미치므로 래퍼를 만들고 다른 것과 비슷하게 만드는 것은 결코 쉬운 일이 아닙니다.또한 객체 지향 데이터베이스는 그래프 데이터베이스가 일반적으로 제공하지 않는 일부 무결성 보장과 유형 지정 구조를 제공해야 합니다.사실 진지한 OO 데이터베이스는 "자유 형식"과는 거리가 멀습니다 :)

[HyperGraphDB][1]를 살펴보십시오. 이는 완전한 객체 지향 데이터베이스(db4o와 같은)이자 표현 및 쿼리 기능 측면에서 매우 진보된 그래프 데이터베이스입니다.일반화된 하이퍼그래프(가장자리가 둘 이상의 노드를 가리킬 수 있고 다른 가장자리도 가리킬 수 있음)를 저장할 수 있으며, 그래프 등으로 내장된 완전히 확장 가능한 유형 시스템이 있습니다.

다른 그래프 데이터베이스와 달리 HyperGraphDB에서는 모든 개체가 그래프의 노드 또는 가장자리가 되며 최소한의 API 침입도 없으며 개체를 그래프로 표시하거나 그래프와 직교하는 방식으로 처리할 수 있습니다. 그래프 구조(노드 또는 에지의 "페이로드" 값)정교한 순회, 맞춤형 인덱싱 및 쿼리를 수행할 수 있습니다.

HyperGraphDB가 실제로 ODMS인 이유에 대한 설명은 블로그 게시물 Is HyperGraphDB가 OO 데이터베이스입니까?를 참조하세요.코브릭스 홈페이지에서

다른 각도에서 벗어날 수 있듯이 그래프 DB는 데이터를 애플리케이션 클래스 및 객체와 분리합니다. GraphDB는 또한 가장 짧은 경로 나 딥 트래버스와 같이 그래프를 처리 할 수있는 더 많은 내장 기능이 있습니다.

또 다른 중요한 차이점은 NEO4J와 같은 GraphDB에서 전체 노드 (노드 속성/속성 포함)를로드하지 않고 관계 (Edge) 유형 및 방향을 기반으로 그래프를 가로지 못하게 할 수 있다는 것입니다. 객체 DB의 백엔드로 NEO4J를 사용하는 선택도 있습니다. 여전히 모든 그래픽을 사용할 수 있습니다. Jo4neo 이 프로젝트는 NEO4J 위에 객체 DB로 계산할 수있는 다른 접근법이 있습니다. neo4j.rb. 새로운 옵션은 사용하는 것입니다 스프링 데이터 그래프, 주석을 통해 GraphDB 지원을 제공합니다.

의견에서 같은 질문이 생겼습니다 이 블로그 포스트.

두 웹 사이트를 빠르게 탐색하는 것 :

주요 차이점은 API가 구축 할 수있는 자유 형식 데이터베이스가 아닌 API가 구성되는 방식입니다.

DB4O는 객체 매핑을 사용합니다. Java/C# 클래스를 생성하고 반사를 사용하여 데이터베이스에서이를 지속합니다.

NEO4J에는 명시 적 조작 API가 있습니다.

Neo4J는 내 겸손한 견해로는 상호 작용하기가 훨씬 더 멋지게 보였다.

키 가치 저장소를 고려할 수도 있습니다. 그 중 하나와 동일한 자유 형식 데이터베이스를 만들 수 있습니다.

낮은 수준의 차이는 그리 크지 않습니다. 둘 다 비용이 많이 드는 조인없이 직접 링크로 관계를 관리합니다. 또한 둘 다 쿼리 언어와 관계를 가로 지르는 방법이 있지만 그래프 데이터베이스에는 연산자가 Nth 레벨에서 재귀 적으로 갈 수 있습니다.

그러나 가장 큰 차이점은 도메인의 것입니다. 그래프 데이터베이스에서는 모두 두 가지 유형을 기반으로합니다. 정점과 가장자리는 일반적으로 자신의 유형을 정점 또는 에지의 일종의 하위 유형으로 정의 할 수 있습니다.

ODBMS에는 직접 쓰지 않는 한 정점 및 에지 개념이 없습니다.

그래프 데이터베이스를 사용하면 수학적 그래프 이론을 기반으로 할 가능성이 약간 있습니다. 객체 지향 데이터베이스를 사용하면 전혀 아무것도 근거하지 않는다는 확실성이 있습니다 (그리고 가장 확실히 수학적 이론은 전혀 없습니다).

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