Uz nevim kde nacerpat radu a pritom prilis neztracet cas ctenim veci ktery resi neco jinyho, tak zkusim tady, kde by se mohl obcas vyskytnout nejaky zkuseny programator:
mam tabulku s logem:
log_id (auto increment integer, primary key, nepodstatny)
datum (proste datetime kdy ta hodnota byla namerena)
hodnota (integer)
id_sensor (integer, vazba do tabulky sensoru)
Jsou tam treba miliony zaznamu, kazdy sensor tam periodicky uklada sva data. nektere sensory kazdych 5 minut, nekter sensory kazdych 10minut, nektery sensory treba kazdych 30 minut.
mam vytvorit spojnicove grafy - den, 10-denni, 40-denni
kazdy graf ma 240px sirku, tedy potreboval bych prave 240 hodnot s tim ze kdyz nejak neni tak se vynecha a ten graf tam bude predpokladat linearni vyvoj hodnoty.
den:
idealne 10 hodnot za hodinu. to je cca kazdych 6 minut.
10 dnu:
idealne 1 hodnota z kazde hodiny
40 dnu:
idealne 1 hodnot za 4 hodiny
ted co s tim?
kolega ktery delal desktop aplikaci tak da select where datum od-do a nacte tam treba vsech 50 000 radku pro ten sensor a casove obdobi(treba kvartal) a "posle" je renderovat a netrapi se s tim protoze tam ma jednoho uzivatele a ten si kdyztak chvili pocka a vyplivne mu to primo obrazek.
Jenze ja delam web aplikaci, muzou tam byt tisice uzivatelu tak potrebuju idealne vypisovat jen ty hodnoty ktere se maji zobrazit (navic to resim ted pres google api takze v podstate do javascriptu vypisuju tu tabulku hodnot takze by pak zdrojak webpage byl moc velky pro prohlizec/mobilni pripojeni. casem mozna budu renderovat primo obrazky, ale tam zase potrebuju taky zbytecne nepretezovat server).
Nejjednodussi reseni, ale ne moc programatorsky košer me napadlo napsat si nejakou smycku a v kazde udelat jeden select neco jako
"select prumer hodnot WHERE sensor = X AND cas je mezi 10:00 a 11:00"
"select prumer hodnot WHERE sensor = X AND cas je mezi 11:00 a 12:00"
nebo
"select top 1 hodnota WHERE sensor = X AND cas je mezi 11:00 a 12:00 ORDER BY datum ASC"
cimz bych mel pro kazdy graf 240 relativne jednoduchych selectu.
pomohl by nejaky odkaz na clanek, nejaka konkretni rada, nejaka rada vhodneho klicoveho slova pro google atp. nemam problem studovat, ucit se, ale nejak zatim nemuzu natrefit na spravny zdroj.
"graf/graph" me porad vedou na teorii grafu(hledani cesty apod), ale tady vlastne moc ani nejde o graf jako takovy ale o to jak vytvorit tu minitabulku hodnot pro nej.
Jestli to bude prumer, max hodnota, median nebo tak neni asi uplne podstatne.
Kdyby to melo necemu pomoct tak se jedna o postgres a je mi jedno jestli to bude napsany v DB nebo aplikaci (PHP).