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