PDA

View Full Version : [Database] Progettazione


CartaIgienica
20-03-2008, 11:46
Devo realizzare un database che raccolga i dati da circa 20 sensori (potranno variare anche fino a 50).
Frequenza di aggiornamento un valore ogni 10 minuti.
Ho pensato di realizzare un unica tabella di questo tipo

ID_SENSORE TIMESTAMP VALORE

la chiave è composta da i primi due campi.
Dato che il SW dovrebbe funzionare 24h/24h è evidente che la mole dei dati è grande, quindi credo che diventi inefficiente poi fare delle query e delle analisi statistiche.

Quale può essere una soluzione?
Creare una tabella al giorno? o una alla settimana tipo?
Aspetto suggrimenti, grazie.

wizard1993
20-03-2008, 11:51
la cosa migliore sarebbe in realtà(secondo me) creare una tabella che come campi abbia il valore di ogni sensore così:
ora |giorno|val s1|vals2|...|valsn

a questo punto avrai al più 240 record al giorno

CartaIgienica
20-03-2008, 12:00
Ci avevo pensato, ma se cambia il numero di sensori dovrei cambiare la struttura della tabella.
In realtà aggiungere tabelle significa cambiare struttura, ma almeno le tabelle sono tutte uguali come struttura.
Tra l'altro i valori dei sensori non mi arrivano sincronizzati, quindi non potrei scrivere un record con tutti i valori ed un unico time stamp.

cionci
20-03-2008, 12:03
Il modo migliore è quello che ha scritto CartaIgienica, visto che il numero di sensori varia.
Assolutamente non sono tanti. Sono 7200 record al giorno. Per un database sono bazzecole.
Magari ogni volta che dovrai fare le statistiche potresti elaborare i dati e spostarli già sotto forma di statistica in tabelle adeguate. In questo modo, se non ti servono le singole rilevazioni, ti salvi sole le statistiche.

CartaIgienica
20-03-2008, 12:12
Supponendo invece che le frequenze di aggiornamento siano molto superiori, ad esempio che i sensori mi diano 10 valori al secondo? Rimarrebbe la soluzione migliore o a quel punto mi converrebbe creare una tabella al giorno se non una all'ora?

cionci
20-03-2008, 12:16
Rimango sempre per l'aggregazione successiva: quando andrai a leggere quei dati li rimuoverai dalla tabella e li sposterai in una tabella con tutte le statistiche.
Un milione di record se li gestisce bene il database, la difficoltà è tutta nel programma che li recupera ;)

CartaIgienica
20-03-2008, 12:19
Ok grazie del consiglio, dato che farò io anche quel programma non potrò scaricare la difficoltà :(
Ma ci penserò in un secondo momento :P

cionci
20-03-2008, 12:23
Ovviamente per database intendo un dbms server serio, non Access :D

CartaIgienica
20-03-2008, 12:29
Ho deciso di utilizzare PostGreSQL credo che sia serio, oltre che gratuito.

cionci
20-03-2008, 12:59
Ho deciso di utilizzare PostGreSQL credo che sia serio, oltre che gratuito.
Certo ;)