RE: uložení a agregace údajů v PostgreSQL

Havel Zdeněk Zdenek.Havel na mius.cz
Pondělí Březen 18 14:59:16 CET 2002


Díky,

takovou reakci jsem potřeboval.

Optimální by bylo, jestliže by se data dala vkládat v intervalu 1 minuty. Z
dat se vykreslovat grafy, sledovat jejich trendy, případně další statistická
vyhodnocení.

Device je identifikace zařízení, v tomto případě jeho doménové jméno, type,
je druh údaje, oboje lze uložit do číselníků.

Indexaci jsem chtěl použít pro zrychlení hledání extrémů, nebo souhrnů.
Dotazy typu "select device,timestamp from 5min_table where value > 20". Za
předpokladu že bude mít zrušení indexu vliv na zrychlení insert operací, je
není nutné indexaci provádět (četnost dotazů bude několik jednotek denně).

Dotazy které budou převládat budou typu "select value form 1min_table where
device=xxx AND type=xxx AND time BETWEEN xxx AND xxx".

Tabulka může být jedna, je otázkou, jestli se při dalším růstu množství
údajů nezačne vzhledem k jejich množství výrazně zpomalovat oproti rozdělení
do více tabulek. Většinou stejně budu hledat data pouze jednoho druhu, tj.
1min, 5min ... Těch 60 zařízení je začátek, časem to může být 100 nebo 200
zařízení s průměrem 4 údajů na zařízení.




                        S pranim krasneho dne
 

>  Jak rychle ty udaje budou pribyvat? Zda se, rychle.
> 
>  Pokud ty data nebudete skladovat a nebudete s toho delat 
> nejaky DW,  tak bych se zamyslel nad tim ma-li cenu je na 
> 1min. davat do DB. IMHO  je to blbost a daval bych tam jen 
> vysledky. Klient (sberac dat) by  si ty udaje mel udrzovat v 
> pameti a agregovat sam a az pak davat do DB. 
>  Pokud na tom ukladani do DB trvate tak bych i tak daval ty 
> data do te DB 
>  po vetsich kusech (treba 3000 radek) a pomoci COPY (viz. 
> treba reseni v 
>  C popsane na linuxzone).
> 
>  Co se tyka te agregace. Potrebujete ty udaje kazdou minutu? Proc je 
>  neagregovat az je bude treba apod. Na to udela ted nejaky zaver je 
>  jste poslal dost malo informaci :-)
> 
> > Agregaci by bylo vhodné patrně vázat na insert trigger pro 
> 1min_table.
> 
>  Trigger je "udalostni" zalezitost. To znamena, ze by to, ze 
> ma agregovat  by musel poznat z dat.
> 
> > Struktura databáze:
> > 
> > 1min_table (data sbíraná v intervalu 1 minuta max, stáří 48h):
> > device 	- char(32)
> > time 		- timestamp
> > type		- char(32)
> > value		- float
> 
>  Co je type a device - je to natolik ruznorode, ze to nemuze byt 
> definovano v nejake ciselniku? 
>  
> > primární klíč je (device,time,type)
> > value je indexovano
> 
>  Proc je to indexovano, budete to GROUP BY delat podle te value? 
> (jak bude vypadat ten select s tou agregaci?).
> 
>  Proc nemate jednu tabulku s agregacemi ruzneho stari?
> 
>  Me to zatim pripada, jak takove mensi znasilneni DB (neberte to 
> nijak spatne) Jeste bych nad tim premyslel nebo poslal vice 
> informaci :-)


Další informace o konferenci Test