2013-02-13 2 views
1

이번 주에 저는 저자가 어떻게 활동을 구현했는지 설명하는 흥미로운 article을 읽었습니다. 기본적으로, 그들은 내가 내 시나리오에 적응하고있어 활동을 처리하기 위해 두 가지 방법을 사용하여, 그래서 우리는 추종자의 특정 숫자 (x)를 가진 사용자 foo는 하바 랬있어 : 그래서Riak의 활동 피드

if x<500, then the activity will be copyied to every follower feed 
    this means slow writes, fast reads 
if x>500, only a link will be made between foo and his followoers 
    in theory, fast writes, but will slow reads 

을 때 일부 사용자 활동 피드에 액세스하면 서버가 모든 데이터를 가져와 병합하므로 복사 된 활동의 빠른 조회를 의미하고 링크를 통해 쿼리합니다. 타임 라인에 제한이 20 인 경우 각각을 10 개 가져온 다음 병합합니다.

저는 Riak과 Linking의 기능을 사용하려고 했으므로 이것이 제 질문입니다. 복사보다 빠르게 연결하고 있습니까? 건축에 대한 나의 생각은 충분하니? 내가 볼 수있는 다른 솔루션 및/또는 기술이 있습니까?

추 신 : 프로덕션을위한 액티비티 피드를 구현하지 않습니다. 단지 성능이 뛰어나고 Riak을 조금 사용하는 방법을 배우는 것입니다.

답변

2

두 가지 생각.

1) 아니요, Linking (Riak Link Walking의 의미에서)이 방법을 구현하는 올바른 방법이 아닙니다. 하나의 경우 각 링크는 별도의 HTTP 헤더로 저장되며 보낼 HTTP 헤더 필드 수에 대한 HTTP 사양에 권장되는 제한이 있습니다. (물론, Riak과 함께 헤더에서 1000 개 이상의 링크를 사용할 수있는 테스트에서 제대로 작동하는 것으로 보이지만 권장하지는 않습니다.) 더 중요한 것은 Link Walking API를 통해 링크를 쿼리하는 것은 실제로 백엔드에서 MapReduce를 사용하며, 사용하려는 용도에 따라 상당히 느립니다.

이것은 링크 목록 인 JSON 개체를 저장할 수 없다는 것을 의미하는 것은 아니며, 이는 유효한 접근 방법입니다. 나는 이것을 위해 Riak 링크를 사용하지 말 것을 권장합니다.

2) 올바르게 구현하는 방법은 더 어려운 질문이며 트래픽 및 사용 사례에 따라 다릅니다. 그러나 일반적인 접근 방식은 유효합니다. 업데이트의 X 값 (X가 500이거나 그보다 작은 값이 테스트에서 결정되어야 함)에 대한 피드를 복사하고 업데이트 수가 X보다 큰 경우 링크합니다.

어떻게해야합니까? 너는 연결되어 있니? 3 가지 선택 사항이 있으며 모두 절충점이 있습니다. 1) 보조 색인 (2i) 사용, 2) 검색 사용 또는 3) "수동"링크를 사용합니다. 즉, JSON 문서를 수동으로 참조 해제하는 URL로 저장합니다 (링크 워킹 쿼리 사용).

클립 보드 엔지니어가 http://vimeo.com/album/2258285/page:2/sort:preset/format:thumbnail (Riak에서 소셜 응용 프로그램 만들기) 비디오를 보면서이 문제를 어떻게 해결했는지 확인하는 것이 좋습니다. (그들은 기본적으로 연결 검색을 사용했습니다.)

+0

대단히 감사합니다. –

관련 문제