Tuesday, June 21, 2011

SW: Fyzicke modely a ich suvislosti (DBS)

Fyzicky pohlad sa pohybuje na nizsej urovni, ako logicky pohlad a jedna sa o fyzicke ulozenie dat. Patria sem sekvencne subory, indexy, clustery ... Programator je od tejto vrstvy odstieneny DBMS systemom. Jedna sa vlastne o implementaciu logickeho modelu v specifickych podmienkach tak, aby manipulacia nad datami bola rychla, zabezpecena a skalovatelna.


Data, ktore ukladame do DB musime nejako organizovat a ukladat na disk, k tomu vyuzivame nasledujuce struktury:

  • heap
  • sekvencny subor  
  • indexsekvencny subor
  • indexovany subor
  • bitove mapy 
  • subor s priamym pristupom 
  • binarny vyhladavaci strom 

Zaznamy udrziavame v tzv. strankach, ktorych zaznam je tvoreny hodnotami datovych typov pevnej velkosti. 






Heap 
Zaznamy su ulozene v strankach neusporiadane, sekvencne za sebou, resp. su ukladane tak, ako dorazia. Halda umoznuje rychle vkladanie stranky na koniec zoznamu. Realizacia haldy je mozna dvojiteho spojoveho zoznamu zaplnenych a nezaplnenych stranok. Dalsou moznostou je "adresar stranok", kde halda je vlastne spojovy zoznam adresarovych stranok. Kazda polozka v adresari ukazuje na datovu stranku a kazda obsahuje priznakovy bit zaplnenosti. Ak takuto heap ulozime do suboru, tak dostavame neusporiadany sekvencny subor. 

Dalsou moznostou je usporiadany sekvencni subor, v ktorom su zaznamy o strankach ulozene usporiadane podla vyhladavacieho kluca. Stranky su udrzovane spojite a umoznuju rychle vyhladavanie podla kluca a to ako na rovnost, tak na rozsah. Vkladanie a mazanie je ale pomale. Nove zaznamy sa ukladaju do neusporiadaneho sekvencneho suboru a raz za cas sa vykona pretriedenie stranok. 




Hashovany subor organizovany do tzv. buckets - kapsa, kde je mozne ulozit niekolko stranok. Zaznam je vlozeny/citany do/z kapsy, ktora je urcena hashovacou funkciou a klucom pre vyhladavanie. Pokial v kapse nie je miesto, tak sa pripoji nova kapsa (spojovy zoznam). 


Indexovanie je pomocna struktura, ktora umoznuje vyhladavat podla vyhladavacieho kluca. Je organizovana do stranok, podobne ako datove subory. Obsahuje len hodnoty klucov a odkazy na zaznam. Polozka indexu moze obsahovat dvojicu <kluc, rid>, <kluc, rid-list>. Indexy mozu byt zhlukovane a nezhlukovane. V nezhlukovanom indexe nie je dodrazane poradie klucov. 


Bitove mapy su vlastne akousi mapou vyskytu. Pouzivaju sa k ulozeniu informacie o volnom slote v stranke u DB alebo pre indexovanie atributov s malou domenou. Operacie ako bitovy sucin a sucet su v takomto pripade efektivne a vysledna mapa potom oznacuje zaznamy vyhovujuce dotazu. 


Pre kazdu hodnotu h indexovaneho atributu a sa zkonstruuje bitova mapa, kde jednicka na pozicii i znamena, ze hodnota h sa vyskytuje v i-tom zazname tabulky a plati, ze bitovy sucet vsetkych map vytvori same jednicky a bitovy sucin libovolnych dvoch map atributu je 0. 




Vyhodou map je uspora miesta, rychlost bitovych operacii, jednoducha paralelizacia nad mapami. Nevyhodami je, ze su obmedzene len na atributy s malou domenou a neexistuje usporiadanie, takze sa odpovede spomaluju s rastucim poctom dotazou. 


Dalsou moznostou su B+-strom, co je vlastne strom s m potomkami a B asi znamena, ze balanced. Vlozenie a dotaz na shodu su logaritmickej zlozitosti. Zarucuje 50% zaplnenost stranok.