Witam,
chciałbym uzyskać pomoc w projekcie bazy danych, sytuacja wygląda następująco: jest system pomiarowy składający się z 20 czujników temperatury, odczyty wykonywane są co minutę, czyli wychodzi 1440 odczytów na dobę dla każdego czujnika. Baza ma przechowywać dane z co najmniej kilku lat w celach porównawczych. Dane będą wykorzystywane do generowania wykresów. Skrypt generujący wykres przyjmuje dane w postaci {data1, seria1, seria2, seria3 ...seriaX},{data2, seria1, seria2, seria3 ...seriaX}. Jak optymalnie zaprojektować tabele, pod względem wydajności przy pobieraniu ciągłych zakresów czasowych (np. doba, tydzień, miesiąc)?
Postgresql, typy danych timestamp i smallint(minimalizacja rozmiarów bazy).
Wariant A. (ok. 500 tys. rekordów na rok)
data, t1, t2,t3 ... t20
24-04-2012 17:00, 10,11,12 ... 10
24-04-2012 17:01, 11,10,12 ... 10
Wariant B. (ok. 10 mln. rekordów na rok)
data, czujnik, temp
24-04-2012 17:00, 1, 10
24-04-2012 17:00, 2, 11
24-04-2012 17:00, 3, 12
...
24-04-2012 17:00, 20, 10
24-04-2012 17:01, 1, 11
24-04-2012 17:01, 2, 10
24-04-2012 17:01, 3, 12
...
24-04-2012 17:01, 20, 10
Wydaje mi się, że wariant A będzie szybszy przy zapytaniu o temp. z kilku czujników, w podanym zakresie czasu (mniej rekordów do przeszukania).
Ponadto w następnej tabeli będą przechowywane dane statystyczne za okresy np. 10min (minimum,maximum,średnia,mediana). Będą wykorzystywane do generowania wykresów za dłuższe okresy czasowe (3, 6 miesięcy).
Wariant A. (sporo kolumn, 50 tys. rekordów na rok)
data, min1,max1,sre1,med1,min2,max2,sre2,med2, ... min20,max20,sre20,med20
24-04-2012 17:00, ...
24-04-2012 17:10, ...
24-04-2012 17:20, ...
24-04-2012 17:30, ...
Wariant B. (1 mln rekordów na rok)
data, czujnik, min, max, sre, med
24-04-2012 17:00, 1, ...
24-04-2012 17:00, 2, ...
...
24-04-2012 17:10, 1, ...
24-04-2012 17:10, 2, ...
Wariant C. osobne tabele dla każdego czujnika po 50 tys. rek.
t1
data, min, max, sre, med
t2
data, min, max, sre, med
Ponownie wariant A wydaje mi się najodpowiedniejszy (mimo dużej ilości kolumn), łatwiej będzie wyszukać i pobrać dane do generowania wykresu.
Proszę o radę czy słusznie typuje na warianty A. czy może jednak inny układ jest optymalniejszy.