Jupp, wie schon erwähnt wurde, ist ja grade ein gutes
DBMS dafür da mit vielen Daten ordentlich zu rechnen.
* in der
DB alles berechnen (paar SELECTs von einem Programm aus sind da dann aber nicht unbedingt das opzimale)
** alles in StoredProcs/Trigger, wo dann durch irgendwen regelmäßig eine Berechnungsfunktion angestoßen wird
* Report-Daten und zu versendende Mails (ReportID, Text, Mailadressen uns) in Tabellen sammeln und dann von einem Programm abrufen
** ab und an anfragen ob was da ist, oder direkt über Notifications die Abfrage anstoßen
Gut, mit den dir bekannten Mitteln lässt sich in der
DB dann die Berechnung nicht Debuggen, aber auch dafür gibt es entsprechende Lösungen.
Aber wenn du erstmal nur aufräumem willst, dann nicht mit Tasks/Threads anfangen. Vergiss nicht, dass du dort dann auf eine Trennung oder Synchronisierung global/gemeinsam verwendetet Objekte/Variablen/... sorgen mußt.
Mach es einfach wie viele andere Programme ala Browser, Datenbankserver uvm.:
> Lege Einzelteile in eigenständige Programminstanzen, gesteuert/gestartet/verwaltet von einem "einfachen" Masterprogramm.
=
RAM hat dann jeder seinen Eigenen, globale Objekte gibt es erstmal auch nicht mehr, ein schlimmer Fehler beeinflusst Andere nicht
und von den Tasks/Threads her macht es für das System keinen Unterschied (ist insgesamt ja gleich) und der gesamte
RAM ... OK, der wird etwas mehr (jeder bekommt seine eigene Connection usw.), aber
RAM kostet nun wirklich nichts.
= außerdem verreckt dann nicht gleich alles, wenn ein Teil abkratzt,
du kannst die Einzelteile auch viel einfacher Debuggen, wenn nicht ständig was anderes reinkretscht,
und wenn du an einem Teil rumschraubst, ist die Wahrscheinlichkeit viel kleiner, dass andere Teile auch kaputt gehn (bei gemeinsamen Sourcen auch dann nicht, wenn nicht jedesmal alle EXEn neu erstellt werden)
Und wenn jede Programminstanz dann nur einen kleinen Teil erledigt, dann lassen sich davon auch Mehrere starten, wenn noch genügend Rechenleistung frei ist.
(je ein Datensatz und sich dann beendet oder den nächsten Satz abholen)