2011-09-26 5 views
2

실시간 업데이트 및 최신 알림을위한 대시 보드가 있습니다.데이터베이스 선택 및 날짜/시간 정렬 (실시간 Python 대시 보드)

작성자의 게시물 및 댓글을 구독 할 수있는 블로깅 시스템이라고 상상해보십시오. 난 단지 10 업데이트 내가로드 할 때 표시 할

  • 최근 코멘트
  • 상상

    1. 마지막 게시물 : 나는 그 통지의 2 종류가 삽입 시간으로 분류, 내 대시 보드에 표시 할 대시 보드 (나중에 아약스를 통해 얻는 updtes). 데이터베이스를 어떻게 쿼리해야하며 결과를 어떻게 정렬해야합니까?

      내가 구독 한 데이터에 대해 2 개의 테이블 (게시물 및 의견)을 쿼리하고 해당 데이터를 목록에 추가 한 다음 datetime에 대한 결과를 정렬 한 다음 마지막 10 개를 반환한다고 생각했지만 이러한 테이블 (및 내 구독)이 커지면 정렬하는 데 많은 시간이 걸리기 때문에 아주 좋은 해결책은 아닙니다.

      이 문제에 대한 귀하의 답변/생각은 무엇입니까?

    +0

    ? 장고에서 약 100 만 줄의 데이터베이스를 검색하는 것은 병목 현상이 아니 었습니다. –

    +0

    DAL (MySQL 지원) 및 pymongo (MongoDB 지원)와 함께 web2py를 사용하고 있습니다. –

    답변

    2

    삽입 시간을 내림하고 결과를 10으로 제한하여 첫 번째 테이블 순서를 쿼리합니다. 그런 다음 두 번째 테이블을 같은 방식으로 쿼리합니다. 그런 다음 결과를 파이썬으로 병합하고 처음 10 개를 반환합니다.

    장고 예는 다음과 같이 수 : 당신이 ORM을 가지고 그 (장고와 같은) 웹 프레임 워크를 사용하고

    from operator import attrgetter 
    
    recent_posts = Post.objects.order_by('-created')[:10] 
    recent_comments = Comment.objects.order_by('-created')[:10] 
    both_combined = list(recent_posts) + list(recent_comments) 
    both_sorted = sorted(both_combined, key=attrgetter('created'), reverse=True) 
    most_recent = both_sorted[:10] 
    
    +0

    로드가 더 많으면 그 다음 10 개의 업데이트가 생깁니 까? 이 솔루션을 사용하면 일부 업데이트가 누락 될 수 있습니다. –

    +0

    누락 된 부분이 없는지 확인하려면 "마지막으로 본 타임 스탬프"를 "다음"보기로 전달한 다음 동일한 단계를 반복해야합니다. 단지 WHERE created patrys

    관련 문제