2011-03-17 4 views
4

일반적으로 데이터베이스는 master/slave replication을 사용하여 수평 확장이 가능하다는 것을 알고 있습니다. 이는 개의 동시 읽기 수이 증가 할 때 유용한 전략입니다. 동시 의 수는 또는 시작 성장하는 데이터의 단지 양의 글을그래프 데이터베이스를 분할 할 수 있습니까? 그렇다면 어떻게?

는하지만, 마스터/슬레이브 복제가 당신에게 아무것도하지 않기 때문에 대신 데이터 파티션이 필요합니다.

이것은 키 - 값 시나리오에 유용합니다. 고전적인 예가 TinyURL/bit.ly입니다. 짧은 URL foo에 대한 데이터 읽기/쓰기는 짧은 URL 표시 줄에 대한 읽기/쓰기 데이터와 완전히 독립적 일 수 있습니다.

그래프 시나리오에 있다면 어떻게해야할까요? 더 구체적으로 Neo4j과 같은 그래프 데이터베이스를 분할 할 수 있습니까? 그렇다면 어떻게?

나는 그래프 데이터베이스 (효율적인 순회)를 사용하는 목적을 무 찌르지 않고 그래프를 깨뜨릴 수있는 방법에 대해 머리를 감쌀 수 없습니다.

+2

Jim Webber가 주제에 대해 썼던 것을보십시오 : [Sharding Graph Databases] (http://jim.webber.name/2011/02/16/3b8f4b3d-c884-4fba-ae6b-7b75a191fa22.aspx) 및 [캐시 샤딩 및 Neo4j HA를 사용한 Neo4j 확장] (http://jim.webber.name/2011/02/23/abe72f61-27fab-4c1b-8ce1-d0db7583497b.aspx)! – nawroth

+0

감사합니다. 도움이됩니다. –

답변

4

전체 그래프 구조를 거의 트래버스하지 않습니다.

또한 그래프 구조는 거의 모든 노드에서 많이 연결됩니다.

작은주의를 기울여 잘 연결된 노드의 클러스터를 다른 클러스터에 대한 작은 연결로 구분하여 찾을 수 있습니다. 당신은 클러스터링을 기반으로 파티션 경우

http://en.wikipedia.org/wiki/Cluster_analysis

, 다음 빠를 수 있습니다 클러스터 내에서 순회 그러나 다른 클러스터에 통과 속도가 느려질 수 있습니다.

분할의 전반적인 이점은 클러스터 간 트래버스와 비교 한 클러스터 내 트래버스의 비율에 따라 다릅니다.

+0

클러스터링에 대해 생각해 보았지만 합리적인지 여부는 확실하지 않았습니다. 확인해 주셔서 감사합니다. 그것은 명확한 트레이드 오프를 가지고 있지만 (한 클러스터의 노드가 다른 클러스터의 노드에 연결을 시작하면 비효율적 인 트래버스가 발생할 위험이 있으므로) 다른 옵션이 있는지 계속 알고 싶습니다. –

관련 문제