Cześć.
Tworzę plugin, który będzie miał sporo aren, każda arena będzie miała ranking no i to niby nie jest problemem, mogę aktualizować te rankingi choćby co 5 minut.
W moim zamyśle gracz ma mieć wyświetlaną pozycję w rankingu na podstawie swojego osiągniętego czasu.. tą informację mogę przykładowo zaktualizować przy wejściu na arenę.
Problem tworzy się gdy na arenie jest więcej niż 1 gracz ponieważ jeżeli gracz X ma miejsce top2 a Z ma top1 i X przebije ten czas to wymusza to zaktualizowanie również gracza Z, bo nie bedzie czekał 5 minut na arenie.. czy wychodził i wchodził na arene by mu się zaktualizowała :rofl: No i tu powstaje problem,że każde pobranie pozycji w rankingu to przesortowanie całej tabelki a ja musiałbym pobrać to tyle razy ile osób na arenie, co może mi ubić bazę danych w szybkim tempie, ewentualnie będę musiał posiadać jakieś kwantowe rozwiązania pod mysql :nosacz:
Rozwiązania problemu, które aktualnie brałem pod uwagę:
Trigger w mysql, który aktualizowałby pozycję w rankingu przy każdej aktualizacji na tabelce - na tą chwilę fail, obszukałem pół internetu, nie potrafię zrobić działającego xD
Cache <- Wrzucanie wszystkich czasów do ramu: z plusów: mógłbym dynamicznie aktualizować topki bez większych problemów minusy: jak będę miał 40 aren i na każdej arenie będzie z 2k czasów to robi się 80k rekordów do wczytania na starcie. Nie wiem czy to może być dobre rozwiązanie (choć zapewne tylu nie dotrze tak daleko xD)
Chętnie poznam opinie na ten temat, przygarnę pomysły jak to zrobić najoptymalniej bo mi już ich niestety brakuje.