Mam już wiele istniejących danych w mojej bazie danych i chcę opracować mechanizm punktowy, który oblicza wynik dla każdego użytkownika na podstawie tego, jakie działania wykonują.Projektowanie systemu punktowego na wiosnę
Wdrażam tę funkcję w sposób umożliwiający podłączenie, dzięki czemu jest ona niezależna od głównej logiki i polega na wysyłaniu zdarzeń wiosennych, gdy jednostka zostanie zmodyfikowana.
Problem polega na tym, co zrobić z istniejącymi danymi. Nie chcę zbierać punktów od teraz, ale raczej zawieram wszystkie dane do tej pory.
Jaki jest najbardziej praktyczny sposób na zrobienie tego? Czy powinienem zaprojektować moje wtyczki w taki sposób, aby zapewnić metodę index(), która zmusi mój system do pobrania każdego pojedynczego obiektu z bazy danych, wysłania EntityDirtyEvent, wystrzelenia wtyczek punktów dla każdego, a następnie aktualizacji to, aby punkty były zapisywane obok każdej jednostki. To może spowodować wiele kosztów, prawda?
Najprostszą rzeczą byłoby utworzenie złożonej procedury przechowywanej, a następnie wywołanie funkcji index() w procedurze przechowywanej. To też wydaje mi się jednak złe. Ponieważ muszę napisać logikę do obliczania punktów w java i tak, po co jeszcze raz w SQL? Ponadto, ogólnie nie jestem fanem dzielenia logiki biznesowej na różne warstwy.
Czy ktoś to wcześniej zrobił? Proszę pomóż.