2012-03-02 4 views
2

업적을 기반으로 웹 사이트를 만들고 있으며 업적은 50 개 이상의 그룹으로 분류됩니다. 각 그룹에는 500 개의 업적이 있습니다. 성취가 완료되면 데이터베이스 작성 날짜를 기록합니다. 나는 항상 개별적으로뿐만 아니라 전체적으로 각 그룹의 진행 상황을 추적합니다. 예를 들어 :웹 응용 프로그램 데이터베이스의 진행 상황이나 수준을 추적하는 올바른 방법

Group 1: 5/500 
Group 2: 89/500 
Group 3: 21/654 
Overall: 115/1654 

내 질문에, 처음부터 모든 시간을이 진행 보고서를 계산하는 나쁜 관행 또는 나는이 진행 상황을 저장하는 다른 테이블을 가지고 있고 나는 지금 한 다음 모든 업데이트해야합니까?

답변

1

개별 업적을 추적하고 항상 계산하는 활동 테이블을 만듭니다. 이 미적인 점은 계산을 계산하는 방식을 변경하면 원시 데이터를 전혀 건드릴 필요가 없다는 것입니다.

이것이 너무 느린 경우 업적을 계산하고 저장하는 업적 추적 테이블을 만들 수 있습니다 질의 목적을 위해 정기적으로

+0

항상 그 자리에서 컴퓨팅을 의미합니까? – rvk

+0

처음에는 그 자리에서 항상 계산할 수 있습니다. 그러나 이것이 느려지면 매일 계산할 수 있고 계산 결과를 별도의 테이블에 저장하여 진행 보고서를 표시 할 수 있습니다 –

0

출력이 Cache인지 알고 싶습니다. 이는 실제로 애플리케이션에 따라 다릅니다.

  • "있는 그대로"여러 번 배포 할 제품입니까? 캐싱을 구현하십시오.
  • 그렇지 않으면 보고서에 성능 문제가 있습니까?
    • 아니요? 캐시하지 마십시오.
    • ? 캐싱을 구현하십시오.

응용 프로그램의 당신의 종류, 캐싱을위한 다양한 전략이있다 내가 특정에 무효화 캐시를 선호 (난 그냥 당신이 그 성과를 얻을 수있는 여러 '객체'의 컬렉션이 그 가정한다) 이벤트. 객체 x가 업적을 얻을 때마다처럼,이 "이벤트"는 캐시를 무효화합니다.

출력 코드는 먼저 캐시를 쿼리하고 유효하지 않은 경우에만이를 다시 작성하는 코드를 실행합니다. 이렇게하면 매 x 시간마다 모든 캐시를 다시 작성하는 대신 출력이 항상 유효합니다.

관련 문제