Open marcinpilat opened 9 years ago
Myślę, że w bazie danych powinniśmy zapisywać used i total a nie wartości procentowe. disc write/disc read - jeszcze nie zaimplementowane będzie w [byte/s] network download/upload - [byte/s] ram - [byte/s]
Tak jak pisałem w innym issue - procentowe podawanie pomiarów będzie prostsze. Nie mówiąc o tym, że nie wiem jaka jednostka jest podawana w cpu, a sama wartość (bez odniesienia do wartości maksymalnej) niewiele mówi. Podobnie jest w przypadku network i disc usage - ale w tych przypadkach ciężko wyznaczyć maks. prędkość.
W disk da się wyznaczyć max prędkość. ssd odczyt z dowolnego miejsca jest zawsze taki sam hdd średnia 3 pomiarów
Niby tak, ale dalej pozostaje sprawa sieci i tego, żeby z sensora szły też informacje na temat maks prędkości dysków. No i co nam da zapisywanie pomiarów na zasadzie: total/used, zamiast jednej wartości procentowej.
A tak w ogóle to ja myślałem, że w dyskach będziemy czytali maxRead i maxWrite, odpowiednio używane wartości. No w sumie to mały projekt jest wiec może i procentowe wystarczy, tylko jak na przykład okaże się, że trzeba coś jeszcze wyliczać oprócz wartości procentowej, to niestety nie będziemy mieli już tej informacji itd.
No i zapomniałem chyba o najważniejszym czyli czasie pomiarów.
Dla mnie podawanie procentowe pomiarów wyczerpuje wymagania projektu:)
Czas pomiaru już jest wzięty pod uwagę w polu bazy danych, pytanie, czy przesyłasz czas z sensora, czy bierzemy czas kiedy monitor odczyta wartości z kolejki JMS. Dokładniejsza będzie opcja 1.
Chodziło mi oczywiście o czas odczytu sensora. Jeszcze tego nie dodałem
Też mi się wydawało, że fajniej byłoby zapisać nieruszone dane z sensora, a później je przerabiać, no ale z drugiej strony przyspieszymy trochę odczyt ;p więc na ten moment niech zostanie tak, że w bazie lądują procenty :+1:
Przemyślałem sprawę, jestem za tym co @KamilSzelag napisał wcześniej, czyli chodzi o to, żeby do bazy szło dokładnie to co przychodzi z sensora, w czystej niezmienionej postaci, bez strat informacji. Z punktu widzenia logiki programu nic nie zyskamy wykonując obliczenia przed zapisem, a tracimy dane i sens istnienia monitora, bo równie dobrze sensor mógłby obliczyć wartości procentowe, a nie o to chodzi. Obliczenia powinny być wykonywane przy wyciąganiu danych, użytkownik wybiera zakres i sposób wykonywania obliczeń i najrozsądniej jest wykonać obliczenia na żądanie użytkownika.
Nie zgodzę się:) Monitor zbiera informacje i je przechowuje. Teoretycznie dane mogą być zapisywane tak jak przychodzą z sensora i obliczane, ale nie widzę takiego wymagania w specyfikacji. Rozumiem, że gdybyśmy robili bardziej rozbudowaną aplikację, to zapisywanie wszystkich danych ma sens w imię ew. przyszłych analiz, ale tu raczej nie. Nie jest to nie wiadomo co, żeby przestawić się na to, co wy proponujecie, tylko pytanie, czy jest taka potrzeba.
Sensor jest odpowiedzialny tylko i wyłącznie za pobranie i przesłanie odpowiednich parametrów z systemu, nie wykonuje żadnych obliczeń. Tutaj mam nadzieje, że wszyscy się zgadzamy.
Monitor odbiera dane, utrwala je, i może z nimi robić co mu się podoba.
Projektując system powinniśmy kierować się zasadą open/closed, czyli system/moduły/klasy/metody powinny być otwarte na rozszerzenia, zamknięte na modyfikacje. Propozycja przeliczania wartości przed zapisem do bazy jak najbardziej spełnia wymagania, tyle że przy jakichkolwiek zmianach wymagań (pokazanie max/total byłoby niemożliwe / wymagałoby dużej ingerencji w system od zaorania bazy danych do zmian w logice systemu).
Z naszego punktu widzenia (spełnienia minimalnych wymagań) nie ma żadnej różnicy (w nakładzie kodzeniogodzin) w tym czy serwis odpowiadający za przeliczenie wartości będzie wywoływany przed zapisem danych do bazy czy przy odczytywaniu wartości z bazy danych. Czyli co chcę przez to powiedzieć, tą samą robotą (niewiele większym nakładem pracy, jedyne rozszerzenie to bardziej rozbudowane encje i stworzenie DTOsów, żeby przesłać restem), można zrobić system rozszerzalny, można to podkreślić w dokumentacji, jest to zdecydowany atut systemu. ;p
Tak jak pisalem w innym issue sciaganie z kolejki juz dziala, jedyne co pozostalo do dopisanie wrzucania do bazy danych.
Zapisywanie przetworzonych pomiarów do bazy danych w tabeli Measurement z odpowiednim MeasurementType.
Lista pomiarów: