2010-03-22 4 views
6

.인기 알고리즘 - SQL/I는 <strong>같은 사이트 레딧</strong>, <strong>디그</strong> 심지어 <strong>유래</strong>에 사용되는 인기 알고리즘으로 찾아 봤는데 장고

레딧 알고리즘 :

t = (time of entry post) - (Dec 8, 2005) 
x = upvotes - downvotes 

y = {1 if x > 0, 0 if x = 0, -1 if x < 0) 
z = {1 if x < 0, otherwise x} 

log(z) + (y * t)/45000 

나는 항상 내가 그런 주문을 처리하는 방법을 궁금하네요, SQL 내에서 간단한 순서를 수행했습니다.

테이블을 정의하는 데 사용해야합니까? 또는 수식 (의 성능 저하없이 주문 번호가) 내에 SQL을 빌드 할 수 있습니까?

성능 문제를 일으키는 일없이 여러 차례 주문 알고리즘을 사용할 수 있다면 궁금합니다.


저는 Django와 PostgreSQL을 사용하고 있습니다.

도움을 많이 주시면 감사하겠습니다.^

답변

3

인기 값을 고유 한 열에 저장하고 기본 값이 변경되면이를 업데이트해야합니다. 또한 해당 열에 데이터베이스 인덱스를 설정해야합니다. 그런 다음 가장 일반적인 쿼리의 결과를 캐시하는 경우 인기 쿼리의 성능에 대해 가장 효과적인 방법을 취했습니다.

+0

@stefanw 귀하의 답변을 다시 읽어야했습니다. stefan에게 고마워, 나는 이것이 갈 길인 것 같아. SQL을 통해 주문하거나 설정하는 것은 너무 복잡 할 수 있습니다. :) – RadiantHex

관련 문제