2012-05-16 2 views
2

거기에 많은 사람들이 있어야한다는 것을 알고 있습니다.그래프 데이터베이스에서 집계를 수행하기위한 아이디어

neo4J를 사용하여 프로젝트 작업. 사진이라는 엔티티가 있다고 가정 해 보겠습니다. 이제는 인터넷과 백만 명이 좋아합니다. 백만 그루짜리 좋아하는 것들을 그래프에 넣은 다음 그 그래프를 탐색하여 합계를 계산하면 그 수를 보여줄 수 있습니다. 물론 색인은 특히 인덱스가 집계 계산에 사용되는 경우 (SQL에있는 것처럼) 인덱스를 더 효율적으로 만들 수 있지만 주위를 사냥하면 이것이 사실이 아니라고 생각하게됩니다. 물론 집합체의 상당수는 특정 노드에서의 관계 카운트 일 뿐이지 만 여전히 잘못된 것처럼 보입니다 (예 : 사진에서 Like 이벤트로가는 그래프 관계가보기 흉한 것처럼 보임).

아마도 가장 좋은 방법은 그래프 DB를 사용하여 이벤트가 좋은지, 아니면 이벤트와 같은지를 SQL 데이터베이스에 넣는 것입니다. 한 가지 논쟁은 내가 그 모든 곤경에 빠져서 '얼마나 많은 친구들이 이것을 좋아했는지'와 같은 집합체를 원한다는 것입니다. 나는 그래프의 뒷마당에서 곧 돌아온다.

밖에있는 선택 사항은 write some java이거나 많은 암호 쿼리 중 하나 인 것 같습니다.

답변

4

롭,

거기에 몇 가지 옵션,

  • 어떤 사람들은 다른 저장소에 그래프 그래프의 데이터와 원시 이벤트를 유지하는 것이 가장 좋습니다 결정하고 바로 높은 수준의 개념을 도출 이벤트 스트림에서 생성하고 그래프의 내용을 구체화합니다.
  • 총계 데이터를 저장하는 2 차 인덱스는 유사하지만 트랜잭션 그래프와 유사하지는 않습니다.
  • 그래프 구조를 사용하여 집계 된 값이나 액세스 패턴을 나타 내기 때문에 Renet Pickard는 graphity 실시간 트윗 쿼리를 사용하여이를 보여주었습니다. 이것의 소스는 때때로 당신 같은이 간다, 모든 좋아하는 읽을 더 중요하거나 매우 중요 그 좋아하는의 작은 숫자입니다, 당신의 사용 사례에서 볼 필요가 github

에서 사용할 수 있습니다 카운트, 자주 읽는다면 그것을 집계 (그리고 그것을 동기화 유지)하고 집계 장소에서 읽을 수 있습니다.

그래프의 스키마가 적기 때문에 진화 할 수도 있습니다. 즉, 좋아하는 사람이 몇 분이면 더 빠르며 관계 수를 계산하여 그 수를 계산하는 것이 현명합니다 특정 숫자를 넘어서면 이미지 자체의 변수로 마이 그 레이션 할 수 있습니다.

이것은 시간 중심 접근 방식 일 수도 있습니다. 사진이 게시 된 직후에 많은 일들이 일어나므로 카운트를 최신 상태로 유지하고 싶습니다 (결국 카운트가 몇 퍼센트 씩 차이가 난다는 사실을 기억하지 않으므로 지연 업데이트도 가능합니다).). 잠시 후 그 그림은 더 이상 주목을받지 못하고 같은 수를 속성으로 집계하는 것이 안전합니다.

+0

안녕하세요. 좋은 대답, 고마워. 문제 공간에서 정확성의 모호함에 대해 모두 알고 있습니다. 저는 보통 제목이 의미하는대로 아이디어를 찾고있었습니다. 무언가를하는 것이 보통의 부하에서 접히지 않을 것입니다. 일이 짐을 취급 할 수 있더라도, 무의미한 짐을 짊어지는 것은 나쁜 아이디어이다. 내가 생각한 옵션 중 하나는 Vertica와 같은 컬럼 데이터베이스에 정보를 쏟아 붓는 것이 었습니다. 스토어와 캐시에서 관리하지 않고 효과적으로 캐시 된 어리석은 빠른 집계를 얻을 수 있었기 때문입니다. 감사. – Rob

관련 문제