2014-12-24 2 views
1

최근 그래프 데이터 스토어로 cayleyArangoDB으로 게임을 시작했습니다.그래프 트리플과 EAV의 차이

그래프 데이터베이스에 대한 비디오를 읽고보고있는 중에 일반적인 SQL의 일반적인 (그리고 끔찍한) EAV 저장소와 그래프 데이터베이스가 다른 점 (그리고 "굉장한")을 만드는 이유는 무엇입니까? 이 presentation에서

다음 인용문 나타납니다 :

그래프 데이터베이스가 제공하는 모든 스토리지 시스템입니다 인덱스가없는 인접

그러나 인덱스가없는 인접를 무엇 정확히 의미 ? 그리고 그것이 성능이나 디자인에 어떤 영향을 미칩니 까? 다음 스키마와

는 슬라이드에 나열된 모든 쿼리가 가능하고 매우 간단합니다 :

CREATE TABLE "graph" (
    "subject" TEXT NOT NULL, 
    "predicate" TEXT NOT NULL, 
    "object" TEXT NOT NULL 
); 

-- Give me all the vertex that go from "A": 
SELECT "object" FROM "graph" WHERE "subject" = 'A'; 

-- Give me all the pairs connected by "C": 
SELECT "subject", "object" FROM "graph" WHERE "predicate" = 'C'; 

-- Give me all the vertex that go to "B": 
SELECT "subject" FROM "graph" WHERE "object" = 'B'; 

-- Give me all the vertex that go to "B" through "C": 
SELECT "subject" FROM "graph" WHERE "object" = 'B' AND "predicate" = 'C'; 

답변

2

이 정직 인덱스가없는 인접 내가 기본적으로 마케팅 전문 용어로. 예제는 간단하고 가능하지만 그래프 데이터베이스를 사용하면 은 mysql에서 처리하기 쉽지 않은 (그리고 매우 나쁜 성능의 대부분) 쿼리를 수행 할 수 있습니다. F.e. 그래프의 두 정점 사이의 최단 경로를 알고 싶다면 mysql을 사용하여 할 수 없다.

ArangoDB에서

는 하나의 간단한 호출입니다 : 당신이 다양한 기능 ArangoDBs 그래프에 관심이 있다면

GRAPH_SHORTEST_PATH ("yourGraph", "StartVertex", "EndVertex")

은 모듈 제공 graph manual과 예제를 읽을 것을 권장 할 수 있습니다. mysql에서 동일한 것을 달성하기 위해 고심할만한 많은 유스 케이스를 찾을 수있을 것입니다.