MySQL: jak postavit správný dotaz na databázi

Jan Kolář

Re:MySQL: jak postavit správný dotaz na databázi
« Odpověď #15 kdy: 07. 03. 2017, 11:41:24 »
Už to, že se vám v tabulce opakuje stejný vzor sloupců typeX a iX, je velmi podezřelé – ukazuje to, že máte pravděpodobně špatně navrženou strukturu tabulek. A když píšete, že typeX a iX tvoří nějakou dvojici a chcete hledat takové hodnoty iX, kde typeX má nějakou konkrétní hodnotu, je ten špatný návrh struktury jistota. Asi spíš chcete mít tabulku měření, typ, hodnota. A pokud chcete identifikovat i jednotlivá měření, dává smysl vedle toho mít tabulku měření, kde budete mít poznamenaný třeba čas měření, a na tuto tabulku se z tabulky výsledků měření jen odkážete.

Vycházel jsem z toho, že script jenž měření zaznamenává vždy vygeneruje všech 60 měření (tj zaznamená 60 typu a 60 hodnot). K tomu potřebuji vědět čas kdy k měření došlo.

Aktuálně je vše v jedné tabulce, jelikož zápis je jeden dotaz na databázi. Export dat je typicky po 200 - 1000 hodinách, kde výsledkem je graf. Měří se po 15 minutách. K výsledkům se z 99% už není třeba vracet (zřejmě jednou za dva měsíce vyexportuji data starší než dva měsíce) a dotaz na databázi s CASE je jen proto, že vzorky se měří po skupinkách a pokud někdo zatrhne skupinky dvě a jedna je tam 500 hodin a druhá 200 tak by se vracela data z předchozí skupiny jenž tam byla před 200 hodinami.

Tedy dotaz na export dat se dělá max jednou za několik dní. Do začátku mě napadlo mít tabulku id, typ a proud pro každou pozici s tím že id by byl čas od prvního spuštění testeru inkrementovaný po 15 min. tj  id = 1 by bylo 3.3. 12:00 a id = 2 by bylo 3.3. 12:15. Výpočetní složitost exportovaných dat mi přišla ale větší než to dělat takto - tedy snadno čitelně pro lidský zrak. Druhá myšlenka byla uchovávat pouze proud a typ určovat z tabulky typ vzorku, pozice, čas vložení, čas vyjmutí.

Veškeré ale mnou vymyšlené možnosti mi přišli příliš zatěžující RPI při zpracování a jejich benefit sporadický vzhledem k praktickému nasazení.


Jan Kolář

Re:MySQL: jak postavit správný dotaz na databázi
« Odpověď #16 kdy: 07. 03. 2017, 11:42:27 »
Na ukládání naměřených dat nejsou relační databáze vhodné. Lepší je použít real time databázové systémy. Ty jsou uvnitř dělané jinak, nebo přímo nějaké řešení postavené pro ukládání dat ze senzorů. třeba TDMS.
Jinak pro takovéto použití třeba influxdb.

Děkuji za typ - nastuduji

Jan Kolář

Re:MySQL: jak postavit správný dotaz na databázi
« Odpověď #17 kdy: 07. 03. 2017, 11:44:30 »
Ještě doplním, že jestli chceš mysql provozovat na Rpi, tak to hlavně nenechávej na standardní SD kartě. Ta ti možná nepřežije ani ten rok, když na ní budeš každou 1/4 hodinu zapisovat. Ale to už se tu řešilo hodněkrát.

Děkuji za typ - přestěhuji na USB