2010-01-19 10 views
0

그래프 구조로 사용자 친구 모델을 구축해야하는 애플리케이션을 살펴보고 있습니다. MySQL에 표준 SQL을 사용하면 순환 참조로 인해 작동하지 않으므로 몇 단계가 필요합니다. 사용할 수있는 그래프 알고리즘을 살펴본 결과 전체 레코드 집합을 Graph 개체로로드 한 다음 해당 개체에 작업을 수행하는 작업이 포함됩니다. 나는 모든 작업을 위해 이것을 할 여유가 없다.Ruby on Rails에 글로벌 해쉬 저장하기

Graph 개체를 메모리에 전역 개체로 저장하고 해당 개체를 호출하고 업데이트하기를 원합니다. 그러나 레일스는 별도의 프로세스를 생성하여 확장하므로 단일 레일스 프로세스가 소수의 동시 사용자로만 확장되므로 거의 즉각적인 동기화 문제가 발생할 것입니다.

메모리에 객체를 저장하고 두 요청간에 그리고 여러 잡종/모든 프로세스간에 객체를 동기화하는 방법을 아는 사람이 있습니까?

이 시점에서 프로세스 모델 대신 스레드 모델을 사용하여 크기가 조정되므로 그래프 작업을위한 Java 서비스를 살펴 보았습니다. 잠시 동안 스케일링 문제를 다룰 필요가 없을 정도로 충분히 확장 할 수 있습니다.

나는 모든 레일 솔루션을 보유하고 싶습니다. 유지 보수 및 구축이 더 쉬워지기 때문입니다.

+0

위대한 답변과 그 중 하나를 특별히 사용하지는 않지만 나는 그 일반적인 방향으로 가고 있습니다. 이것은 소셜 그래프 문제이므로, 네오 그래프는 소셜 그래프 데이터베이스이므로보고 있습니다. –

답변

1

하나의 옵션은 데이터를로드 할 소형 랙 애플리케이션을 구축하는 것입니다. 데이터 쿼리 및 컴퓨팅 논리는 해당 랙 응용 프로그램에 있습니다. 랙 애플 리케이션에서 레일 애플 리케이션으로 전송할 필요가있는 것을 HTML로 생성하기 위해 localhost에 일반 HTTP 호출을 사용할 수있다.

이것은 기본적으로 Rails 애플리케이션에 여러 프로세스를 사용하는 경우의 일시적인 해결책입니다. memcached, NoSQL 데이터베이스 등과 같은 더 나은 솔루션이 있다고 확신합니다.

0

분산 해시 테이블이 필요하거나 RDBMS의 대안으로 CouchDB와 같은 것이 필요할 수도 있습니다.

1

Redis 당신이 찾고있는 도구입니다.

+0

흥미 롭다면 사람들이 소셜 그래프 용으로 사용한이 게시물을 보았으므로 조금 더 자세히 살펴 보겠습니다. –

관련 문제