Posted By: medved (A~z na v~eky Mikov~ce.) on 'CZdatabases'
Title: Re: Kapacita PostreSQL (Datove sklady)
Date: Wed Aug 25 16:58:27 2004
> > Nebo pokud se jedna o urcity typ dat/jejich pouziti - treba datove sklady
> > lze
> > resit velmi elegantne za desetinu nakladu s desetkrat rychlejsi odezvou ve
> > specialnich DW databazich (oproti OLTP stroji). Ale to uz neni o
> > PostgreSQL...
>
> Neni, ale muzem to rozvyst. Nikdy sem s nicim takovym nedelal, muzes
> postnout
> nejaky odkazy na info o DW? Podle jmena mam pocit ze to nebude vyhovovat,
> ale znalosti se vzdycky hodi.
OK
Konkretne o tom DW. Mozna, ze Te to inspiruje i pro ten GIS.
Takze v pripade DW se jedna o dotazy nad daty, ktere jsou v drtive vetsine
read-only. Zapisy se provadeji vetsinou z jednoho mista (ETL nastroje).
Pak tyto dotazy smeruji na jeden ci nekolik atributu entity a jsou pres
vetsinu (ne-li vsechny) zaznamy.
V DW se ptas na velikost objednavky u vsech objednavek (serazeno podle
produktu, casu...).
Kdezto u OLTP zpracovani se ptas na vsechny atributy jednoho zaznamu - ID
objednavky, jeji cena, datum vydani, poskytnute slevy, jmeno obchodnika...
Proto jsou u OLTP databazi atributy entity ulozeny na disku hned vedle sebe
(neboli sloupce tabulky jsou ulozeny v jednom radku). To je lepsi na OLTP
operace jako je zmena dat apod.
Pro OLAP (=DW) zpracovani je to ale nevhodne. Pro precteni milionu cen
objednavek musime precist z disku do RAMeti milion jmen obchodnika a dalsi
kidy, co nas nezajimaji.
Ten figl, o ktery mam na mysli je jine ulozeni dat - po sloupcich. U sebe mas
vsechny ceny objednavek. Jinde mas poskytnute slevy (pro vsechny objednavky).
Takze pokud ma cena 2 byte a cely radek tabulky objednavek celkem 2 KB, ctes z
disku tisickrat mene dat.
Navic si muzes s daty jeste dale pohrat. Sleva, normalne velikost 1 byte, se
vyskytuje pouze v datech pouze v 6 ruznych hodnotach. Zaznamenas ji tedy jako
5 ruznych bitovych sloupcu vyjadrujicich zda ma objednavka danou slevu. Takze
dotaz na pocet objednavek se slevou 5% je cteni jednoho milionu bitu.
Nejake slozitejsi where klauzule se pak rozpadaji na binarni scitani a
nasobeni techto bitovych sloupcu - obe velmi rychle operace.
A aby toho nebylo malo takto ulozena data jsou pomerne homogeni - lze je dobre
kompresovat ("5% sleva" sloupec bude s velkym mnozstvim nul) a na disk potom
ukladame (a hlavne z nej cteme) jeste mene dat = dalsi urychleni.
Ale nezkousej v takove databazi delat nejake updaty ;-)
Jiny priklad - databaze casovych rad. Pouzij techniku znamou z digitalniho
videa: Obcas uloz absolutni hodnotu a mezi tim jenom odchylky od predchozi
hodnoty. Vyvaz oba parametry podle pristupu a vykonu CPU a mas efektivne
ulozene informace. Ale musis nejak chytre modifikovat algoritmy pro vypocet
prumeru ci variace...
> Jerry III
Bye
Medved
No matter where you go, everyone is connected.