Alarmy na zmiany wartości

0

czesc, mam taki problem

Jest sobie tabela DANE

name|value
a1|10
a2|20
a3|30

W tabeli zmieniają się wartości co minute/godzinę itp np a1=12, a2=21 itp

I teraz mam usera który ustawia sobie alerty np:
-> jezeli a1>12 i a2 >30 to wyślij mi maila
lub inny warunek
-> jezeli a1<12 i a2 >30 to wyślij mi maila

I teraz jak to ładnie zrobić?

Wiem że ustawie sobie tabelę ALARMY i tam wstawię

a1 >12
a2>30

a1<12
a2>30

i teraz po każdym update na DANE triger sprawdza czy w ALARMY wartość spełnia warunek i ustawiam przy niej flagę active=true.

potem przelatuję po tabeli ALARMY i sprawdzam czy warunek jest active==true. i odpalam coś tam.

czy tak będzie dobrze? Jak zrobić kiedy user ustawi sobie warunek:
jezeli (a1>12 and a2 >30) LUB (a1<10 and a2 < 30)

może ktoś robił coś podobnego?

0

Najprościej, żeby user wprowadzał warunki w składni SQL. Tylko to jest niebezpieczne, bo może on wstawić jakiś groźny kod zamiast zwykłego warunku. Żeby uniknąć tego niebezpieczeństwa trzeba by było zrobić jakiś interfejs do konstruowania bezpiecznych warunków, albo parser sprawdzający, czy warunek jest spoko. Pewnie na necie są jakieś rozwiązania do jednego i drugiego.

Najprostsze rozwiązanie - wprowadzić konieczność akceptacji alertów przez człowieka :)

0

OK. inaczej. środowisko nie jest ważne wiem ze to będzie połączenie:

  • DB
  • jakiś język skryptowy (PHP/Python)
  • jakiś scheduler który cyklicznie (np raz na 1 minute) sprawdza czy jakieś powiadomienie jest aktywne jezeli tak odpala na nim proces powiadamiania

chodzi mi po o opisanie ogolnego algotytmu z pseudo kodem.

Pijany Lew napisał(a):

czesc, mam taki problem

Jest sobie tabela DANE

name|value
a1|10
a2|20
a3|30

W tabeli zmieniają się wartości co minute/godzinę itp np a1=12, a2=21 itp

I teraz mam usera który ustawia sobie alerty np:
-> jezeli a1>12 i a2 >30 to wyślij mi maila
lub inny warunek
-> jezeli a1<12 i a2 >30 to wyślij mi maila

I teraz jak to ładnie zrobić?

Wiem że ustawie sobie tabelę ALARMY i tam wstawię

a1 >12
a2>30

a1<12
a2>30

i teraz po każdym update na DANE triger sprawdza czy w ALARMY wartość spełnia warunek i ustawiam przy niej flagę active=true.

potem przelatuję po tabeli ALARMY i sprawdzam czy warunek jest active==true. i odpalam coś tam.

czy tak będzie dobrze? Jak zrobić kiedy user ustawi sobie warunek:
jezeli (a1>12 and a2 >30) LUB (a1<10 and a2 < 30)

może ktoś robił coś podobnego?

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