2013-03-19 1 views
2

소셜 네트워크 프로토 타입을 작성하는 중 (ROR 3 사용 중)하고 Neo4j를 확인하기로 결정했습니다. 멋지게 보이지만 스케일링에 대한 질문이 있습니다. 및 디자인면에서의 성능.neoj4 대 "전통적인"RDBMS 및 Memcache/Messaging/Redis 솔루션

나는 Etsy가 끼워 넣은 활동 피드 (http://www.slideshare.net/danmckinley/etsy-activity-feeds-architecture 참조)를 연구하고 메시지 큐가 활동을 펼칠 수있는 방법 (예 : 사진 공유 및 500 명 정도의 친구가 뉴스 피드에서이 활동을 사용할 수있게하는 방법)을 이해했습니다.). 또한 뉴스 피드를 캐시 할 수있는 방법 (memcache)과 Redis에 대해 수행 할 수있는 조회 방법을 잘 알고 있습니다.

전체적으로 볼 때 잘 확장되는 고성능 활동 피드를 만드는 것 같습니다 (일반적으로 소셜 네트워크) 일반적인 패턴은 샤딩, 수평 스케일링, memcache, rabbitmq, redis, Mongodb, innodb (mysql) 등을 모두 사용하여 높은 볼륨, 디스크 읽기 등을 보완하는 것입니다. 그러나 이것은 상당히 오버 헤드가됩니다. 디자인 조건 ..

Neo4J는 이러한 배열을 위해 최소한 초기에 필요성을 제거 할 수 있습니까?? 나는 너무 빠르므로 팬 아웃과 메시징을위한 메시지 대기열을 설정할 필요가 없으며 사용자가 수행하는 모든 작업에 대해 "활동"캐시를 설정할 필요가 없으며이를 사용하여 주문 및 메시지 저장? Facebook과 같은 뉴스 피드가 이러한 시스템으로 생성 될 수 있습니까? 아니면 기본 상태 업데이트로 제한된 고성능 활동 피드입니까?

질문이 너무 광범위하면 다른 방식으로 묻습니다. neo4j를 사용하여 페이스 북이나 트위터를 작성하고 업데이트 대기열에 메시지 대기열을 사용할 필요가 없습니다 (대신 실시간 업데이트 스트림을 받고 싶습니다). the fly), 뉴스 피드 용 memcache 및 캐시 된 활동 피드 객체? 아니면 초당 수백 건의 요청을 처리하기 위해 같은 일을하거나 더 많은 일을 수행 할 것입니까?

Etsy, Twitter 및 Facebook이 고성능을 유지하기 위해 사용하는 트릭을 사용하지 않고도 대용량을 처리 할 수 ​​있다면 Neo4J를 사용하는 데 꽤 많은 시간을 절약 할 수 있기 때문에 질문합니다.

+0

초기에이 질문에 대한 짧은 대답은 예입니다. 기억하지 못하는 문제를 해결하는 것은 의미가 없습니다. 문제는 프로토 타입이 없다는 것입니다. 거기에없는 프로토 타입에 일련의 최적화를 추가하는 것은 많은 의미가 없습니다. Neo4J를 올바르게 사용하면 (I.E., 임베디드 버전이 아닌 서버 사용), 필요에 따라 시간을두고 쉽게 최적화 할 수 있습니다 *. – philosodad

+0

답장을 보내 주셔서 감사합니다. 문제가 발생할 때까지 코딩하지 말고 감사하지만 다른 문제는 일반적으로 어떤 문제가 일반적으로 발생했는지 잘 모르는 이유는 무엇입니까? Active Record를 사용하는 프로토 타입은 활동 피드가 아닙니다. (메시징은 이미 완료되었습니다. 사진 업로드 등은 완료되지 않았습니다.) 시작이 필요로하는 마지막 일은 피할 수 있었던 딸꾹질입니다. 좀 더 많은 작업이 필요합니다 ... 나는 단지 시스템을 작동시키고 나중에 최적화에 대해 걱정하기를 원합니다 -하지만 unfunded - 나중에 최적화를 다루기 위해 더 많은 도움을 고용 할 시간이 없습니다. –

+0

서버 대 팁 팁 ... –

답변

2
+0

위대한 대답은 ... 나는 이것을 보았다 ... mysql에서 neo4j 로의 도약을 결정하기 전에 읽기/소화하기가 더 쉬워지기를 바랬다. –

+0

최대 ... 아마도 http : http : //stackoverflow.com/questions/15645938/neo4j-linked-list-multiple-nodes –