Jak by to resil SQL profik ????

Karel Zak zakkr na zf.jcu.cz
Čtvrtek Březen 28 08:19:24 CET 2002


On Thu, Mar 28, 2002 at 02:02:49AM +0100, Karel Král wrote:
> Resim nasledujici problem: sbiram v case data o stavu zaríizeni,
> presneji kazdych 5minut pridam do database Postgresql zaznam (cas, namerena
> data).
> Problemem je mnozstvi vznikajicich dat cca 1MB /24h a tak musim snizovat
> mnozstvi dat, jejich prumerovanim.

 = 365MB/rok = 3.6GB/10let

 ..to mi nepripada zase tak hrozne, za deset let budou disky v TB a
 PostgreSQL bud nebude nebo to pro nej a v te dobe pouzivany HW nebude
 problem (ono to pro nej neni problem ani dnes, jen by to bylo casove
 narocnejsi).

> Data v case > now - 7dni  jsou ponechana v puvodni 5min presnosti.
> Data v case > now - 7dni-1mesic jsou prepoctena na data s presnosti 1 hod.
> Starsi data   jsou prepoctena na data s presnosti 1 den.

 Dulezite je staci-li vam to tak. Pokud ano tak zde asi neni co resit.

> Sam to resim skriptem, ktery se spusi jednou za tyden a zjisti, ktera 5min
> data jsou starsi nez tyden,
> vypocte z nich hodinovy prumer a puvodni data smaze. Nasledne zjisti, ktera
> hodinova data jsou starsi nez mesic a tyden, znich vypocte
> 1 denni prumery a puvodni data smaze.

 Mozna si delat prumery do nejake tabulky, aby se s tim lepe zachazelo
 a ty puvodni data skladovat a jejich objem resit az to z nejakeho
 duvodu bude nutne.

> Sice to funguje, ale neco mi rika, ze by to slo resit i elegantneji bez
> externiho skriptu.

 PostgreSQL je klient-server aplikace, pouziti klienta je tedy
 celkem normalni. Ono by to slo i jinak, ale obavam se, ze elegance je
 casto prave jednoduchost a pruhlednost.

> Jak by to resili profici ?

 Nevim, na to se jich budete muset zeptat, ale dost mozna stejne jako
 vy :-)

> Umi podobnou vec cesit primo SQL stroj ?

 Je to relacni DB? Pak ano.

 Neni to poprve co je to zde reseno. Osobne bych si ty data
 shromazdovat a prumerovat treba jednou za hodinu na strane klienta a
 pak to vse nahrnul do databaze. Tim se vyhnete tomu delat s objemem 
 vsech tech dat -- budete mit jen ty hodinova data nekde v pameti na
 strane klienta a nasledne pak budete pracovat s tabulkou hodinovych 
 prumeru, pripadne tabulkou dennich a mesicnich prumeru. Ty prumerove 
 tabulky budou pomerne male (nejvetsi budou hodinove prumery: 24*365=8760 
 radek rocne, coz je nic). Pokud to takto udelate tak se zcela vyhnete
 pracovani s tou tabukou vsech namerenych hodnot (kterou si muzete
 udrzovat jen tak pro jistotu -- mozna za rok zjistite, ze vas zajima
 jeste nejaky jiny trend nez jen primer). Prokud tabulka hodnot
 preroste vasi trpelivost tak ji proste promazete, nebo vypalite na CD 
 -- nezapomente mazat je snadne a da se to udelat vzdy :-)

    Karel
    
-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/
 
 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz


Další informace o konferenci Databases