2013-05-17 6 views
3

그래프 작업이 거의 실시간으로 수행되는 프로젝트에서 작업하고 있습니다. 우리는 현재 Hibernate, MySQL 및 EhCache를 사용하고 있지만 모든 그래프 관련 지속성을 Neo4j 또는 Titan과 같은 그래프 데이터베이스로 이동하는 것을 고려합니다.그래프 대 관계형 데이터베이스의 성능

그래프 데이터베이스는 Hibernate + 관계형보다 잘 수행 할 수 있습니까? 저는 우리가 6 명 중 6 명을 다른 6 명으로 대체하지 않을 것인지 확인하기를 원합니다.

답변

6

오브젝트 그래프가 깊어 질수록 성능 이점이 오브젝트/그래프 데이터베이스에 더 많이 적용됩니다.

7 개 이상의 JOIN이 있으면 관계형 데이터베이스 성능이 현저하게 떨어집니다.

CAD/CAM과 같은 기하학적 시스템은 BOM (Bill of Material)에 대한 딥 객체 그래프를 사용하여 관련 기능을 능가합니다.

관계형 데이터베이스에는 관계형 대수와 데이터와 해당 데이터를 액세스하고 조작하는 "방법"간의 명확한 구분이라는 큰 이점이 있습니다. 그러나 모든 문제에 완벽하지는 않습니다.

0

당신이 Hibernate를 사용하고 있다면 당신은 본질적으로 객체 그래프를 유지하는 도메인 객체를 유지할 수 있습니다.

데이터베이스는 테이블 형식의 구조이며이 관계에서도 문제가 없지만 빠르게 분해됩니다. 또한, Hibernate는 조인 (join)으로 전체 데이터베이스를 끌어 당기는 불쾌한 습관을 가지고있다.

Neo4j는 객체 기능을 핵심 기능으로하고 당신이 도메인 영속성을 지니고 있다는 것을 감안할 때이 자연스러운 디자인이 더 낫습니다.

또한 Neo4j는 Lucene (어리석은 빠른 검색 색인)을 사용하여 쿼리를 수행하고 탐색을 위해 노드로 바로 이동할 수 있습니다.

결론 : Neo4j는 마인드 블로잉 스케일과 그래프 관련 데이터에 대한 아이디어였습니다. 스케일링에 잘못되지는 않을 것이지만 고전적인 DB 연결과 마찬가지로 도구/라이브러리가 성숙하지는 않습니다.

2

neo4j (또는 일부 그래프 db)로 이동할 때의 이점은 다음과 같습니다. 질의 시간이 일정하고 (거의) 데이터 량의 증가에 관계없이 예측 가능하다는 것이다. 일반화 된 응답은 일반적으로 nosql dbs에 적용 할 수 없으므로 데이터 도메인을 기반으로 한 개념 증명 (proof-of-concept)을 수행하는 것이 좋습니다.

취지 : here. enter image description here

0

그래프 및 관계형 데이터베이스 모두 쿼리 성능을 향상시키기 위해 캐시를 사용합니다. 그러나 그래프 데이터베이스의 에지 통과는 일반적으로 일정 시간 동작이며, 일반적으로 정점이 캐시되면 에지가 캐시됩니다. RDBMS에서 외부 키 탐색은 O (log n) 시간이 걸리는 목표 테이블에서 B- 트리 색인 찾아보기를 필요로합니다. 색인이 캐시에 맞지 않으면 데이터베이스가 디스크 탐색 조작을 수행해야하는데 속도가 느려집니다.

체크 아웃 Bitsy 그래프가 메모리에 저장되면 쿼리 및 업데이트에 매우 빠릅니다. 또는 대규모 데이터 세트를 처리 할 수있는 Neo4J 및 Titan과 같은 다른 청사진 구현을 사용할 수 있습니다.

관련 문제