Processamento numa base de dados com elevado número de registos

Inside

Membro
Saudações techzonianas,
Estou a deixar este post para saber se alguem me poderia ajudar, dar umas dicas ou conselhos sobre um pequeno problema que tenho tido, sou um novato nisto da programação, por isso talvez alguem me possa ajudar :)
O que se passa é o seguinte:
Tenho um projecto onde existe uma base de dados de jogos e pontuações registados. Tenho um ecrã que me dá a média da pontuação actualizada de todos os jogadores sempre que esta for pedida, estes cálculos, como poderão imaginar, tornam-se um pouco pesados, até porque são todos efectuados server-side, a pontuação de cada jogador obedece a vários factores e regras, dependendo tambem da sua equipa e os factores e regras que lhe são aplicadas. Tento ao máximo executar e filtrar os registos por SQL, mas mesmo assim nem sempre é possível, e a versão do SGBD não suporta procedures. Gostaria de saber se existe algum modelo ou técnica que me auxilie nestes cállculos, de forma a não causarem uma carga tão elevada no servidor.
Já pensei em cálcular as médias sempre que um registo de um jogo é alterado ou adicionado, mas isso poderia eventualmente causar inconsistência nos resultados. Também pensei em cron jobs que calculem essa media de X em X tempo, mas nesse caso não teria os dados em tempo real.
Ainda pensei em utilizar uma solução hibrida com as duas hipoteses anteriores, mas não sei se será a melhor opção.
Alguem tem alguma opinião? Peço desculpa pelo testamento, mas estou mesmo indeciso com esta situação.

Cumps,

Inside
 
porque nao adicionas uma tabela a tua BD onde uardas todas as médias dos jogadores, assim sempre que um jogador tem mais pontos calcula a media e escreve nessa tabela, depois a consulta é rapida, visto que nao precisas de fazer calculos na consulta, é mesmo so ir fazer select a tabela...
 
A aplicação do loop unrolling (ou loop unwinding) não iria trazer grandes beneficios à performance da iteração e dos cálculos, pelo menos não tanto como esperado, no entanto vou pensar qual a melhor forma de a aplicar futuramente :)
Em relação a uma tabela com a média e nº de jogos de cada jogador, é uma das soluções que eu tinha encontrado, a cada alteração actualizava a média e guardava-a, tendo diáriamente uma cron job escalonada para actualizar os cálculos na sua totalidade, para não existirem problemas de arredondamentos e assim... pelo que me parece até agora, é a melhor opção a tomar :) Apesar de tornar o código mais complexo.
 
Back
Topo