Wpis z mikrobloga

Mam taki problem. Mam tabelę z logami, 100 insertów na sekundę (docelowo pewnie będzie z 10x więcej).
Tabela jest zdenormalizowana, mamy pola SourceID, CreatedDate, Value, UpperAllowedValue, LowerAllowedValue (dozwolone wartości są zmienne zależnie od godziny i dnia).
Jeśli przez pewien zbyt długi czas (zależny od danych w innej tabeli) utrzymuje się zbyt duża wartość, należy wstawić dane do tabeli AlertTable, wysłać maile. Jeśli stan został naprawiony, to oznaczyć rekord w AlertTable jako zakończony. Jeśli stan utrzymuje się dłużej niż 24h to zamknąć poprzedni alarm, utworzyć nowy.
Jak to poprawnie rozwiązać? Triggery, scheduler, tabele pomocnicze?
Moja baza danych to #sqlserver, ale rozwiązania w innych bazach #sql też się przydadzą.
  • 7
@plushy: I przeszukiwać ostatnie wiersze od poprzedniego uruchomienia? Jest to jakieś rozwiązanie, chyba nawet całkiem dobre.

Myślałem raczej o triggerze na tabeli z odczytami, który to trigger pisze do tabeli o strukturze w stylu SourceID, AlertID NULL, LastValidRead DATETIME, LastInvalidRead DATETIME, IsClosedCase BIT. I przy każdym wstawianiu danych sprawdzać czy dane są w porządku, jeśli tak - to zamykać powiązany rekord, jeśli nie są - to tworzyć/update'ować.
@Ginden: Ja bym odpalał co minute skrypt w cron/scheduler ktory sprawdzał i raportuje.
(Sprawdza w sensie np ostatnie 10 rekordow )
SP tez moze byc, ale skrypt daje wiekszą elastyczność (za jakiś czas możesz chcieć wysylać maila albo odpalać jakieś api)
Tabela alert jak napisales.
Sama tabele z logami mozesz co jakis czas czyscic.