Przetrzymywanie rankingu użytkowników w bazie danych - jak ?

0

Witam

Piszę pewną aplikację (w asp.net mvc/ mssql) do organizowania spotkań, coś w stylu Paintball.

Chciałbym dodać ranking. Każdy użytkownik będzie mógł ocenić każdego (tylko raz) po zakończeniu spotkania i dać mu punkty pewnego rodzaju (będzie ich pewnie kilkanaście np - "dobry gracz", "honorowy przeciwnik" itp)

Do tego momentu, wydaje mi się, że nie ma problemu, ale teraz przychodzi czas na wyświetlenie tych punktów w profilu użytkownika.

Dwa rozwiązania przychodzą mi do głowy:

  1. Za każdym razem (jak użytkownik wejdzie w jakiś inny profil aby obejrzeć statystyki danego gracza) pobierać dane i na bieżąco przeliczać ile ma punktów danego rodzaju.
  2. Przechowywać dane tak jak wyżej, ale dodać jakąś dodatkową tabelę, która będzie aktualizowana co jakiś czas (np 3 dni - częściej raczej nie byłoby potrzeby) i z tej tabeli pobierać dane

Może jakieś inne pomysły ?

1

Możesz zrobić widok/funkcje, który pobierze przeliczone dane.
Możesz zrobić tabelę z sumowanymi wartościami i napisać trigger który po dodaniu/zmianie oceny przeliczy statystyki dla użytkownika. Coś jak twój pkt 2, ale dzieje się od razu.

0

Pojęcie na dziś Event Sourcing. W praktyce niech będzie to zmaterializowany widok, w którym przechowywane są przeliczone wyniki, a raz na pewien czas (np. na dobę, godzinę etc.) będzie on uaktualniany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1