1. Algoritmi i
strukture podataka
Organizacija i struktura baza podataka
Leonardo Miljko
www.ckm.ba - Leonardo Miljko
Prezentacija nastala na osnovu knjige:
Brano Markić i Dražena Tomić,
Uvod u algoritme i strukture, Ekonomski fakultet , Mostar,2008.
2. Organizacija i struktura baza podataka
Razumjeti organizaciju i strukturu baze podataka je moguće samo
poznajući njezinu arhitekturu. Arhitektura baza podataka mora
ispuniti zahtjeve za učinkovitim pohranjivanjem podataka te
njihovo ažuriranje, dodavanje, brisanje i pretraživanje. Ti zahtjevi
rezultirali su stvaranjem posebnog softverskog paketa koji se zove
sustav za upravljanje bazama podataka.
ANSI/SPARC arhitektura baze podataka objavljena 1975. i danas služi
za prikaz arhitekture baze podataka.
DBMS-ovi (Data Base Management System) u potpunosti bazirani na
toj arhitekturi. Međutim, ona očito i jasno, na konceptualnoj
razini, pojašnjava suštinu arhitekture baze podataka.
ANSI – engl. American National Standards Institute (Američki nacionalni institut za standardizaciju),
SPARC – engl. Standards Planning and Requirements Committee (Komitet za planiranje i zahtjeve za
standarde)
www.ckm.ba - Leonardo Miljko
3. Organizacija i struktura baza podataka
Prikaz ANSI/SPARC arhitekture baze podataka.
www.ckm.ba - Leonardo Miljko
4. Organizacija i struktura baza podataka
ANSI/SPARC pristup dijeli arhitekturu baze podataka na tri razine:
Konceptualna razina predstavlja logički pogled na čitavu bazu
podataka
Vanjska razina je korisnički pogled na bazu podataka, a formira se
sukladno potrebama i ograničenjima korisnika u uporabi baze
podataka
Unutarnja ili fizička razina opisuje fizičko implementiranje baze
podataka na konkretnom hardveru.
Unutarnja ili fizička razina (engl. storage level - razina pohranjivanja)
je dio arhitekture baze podataka bitan za organizaciju i strukturu
podataka unutar baze.
www.ckm.ba - Leonardo Miljko
5. Organizacija i struktura baza podataka
Sustav za upravljanje bazom podataka (DBMS) mora osigurati
formiranje i održavanje sve tri sheme (razine) baze podataka, kao i
preslikavanje među njima koje omogućuje:
• reorganiziranje unutarnje ili fizičke razine bez mijenjanja logičke tj.
konceptualne sheme
• promjenu konceptualne sheme bez mijenjanja postojeće vanjske
sheme.
Osnovni cilj koji se želi postići tom arhitekturom je fizička i logička
neovisnost podataka.
www.ckm.ba - Leonardo Miljko
6. Organizacija i struktura baza podataka
Fizička neovisnost podataka znači da promjena unutarnje (fizičke)
sheme ne zahtijeva promjenu aplikacijskih programa.
Logička neovisnost podataka znači da promjena konceptualne sheme
ne zahtijeva mijenjanje aplikacijskih programa.
Da bi se na fizičkoj razini baze podataka locirao (pronašao) određeni
podatak koji zahtijeva vanjska razina (aplikativni program), koristi
se nekoliko slojeva softver-a, a oni se razlikuju za svaki konkretni
DBMS. Svi oni na konceptualnoj razini imaju slična načela.
Jedan od osnovnih ciljeva razvoja baza podataka jest razdvajanje
podataka od aplikacija koje ih koriste, odnosno omogućavanje
neovisnog održavanja podataka, bez mijenjanja aplikacija
(programa) koji te podatke koriste.
www.ckm.ba - Leonardo Miljko
7. Organizacija i struktura baza podataka
DBMS, upravljanje datotekom i upravljanje
diskom na konceptualnoj razini
www.ckm.ba - Leonardo Miljko
kako više softverskih slojeva može pronaći
određeni podatak pohranjen u bazi
podataka. Tipični koraci su:
DBMS određuje koji se slog traži, a
potom prenosi zahtjev softveru za
upravljanje datotekom (engl. file manager)
da taj slog pronađe .
Softver za upravljanje datotekom zatim
pronalazi blok s traženim slogom i zahtijeva
od softvera za upravljanje diskom (engl.
disk manager) da dohvati taj blok.
Softver za upravljanje diskom utvrđuje
fizičku lokaciju traženog bloka na disku i
upućuje neophodni zahtjev za I/O disk
operacijom
8. Organizacija i struktura baza podataka
• Na konceptualnoj razini, može se zaključiti da DBMS promatra
bazu podataka kao kolekciju slogova i taj pogled podržava
softverski sloj za upravljanje datotekom.
• Softver za upravljanje datotekom pak promatra bazu podataka
kao kolekciju blokova i taj pogled podržava softver za upravljanje
diskom koji promatra disk onakvim kakav on stvarno i jest.
• Softver za upravljanje diskom je dio operacijskog sustava računala.
Taj sloj softvera je odgovoran za sve ulazno/izlazne operacije i kao
takav on mora znati fizičke adrese. Na primjer, kada softver za
upravljanje datotekom traži dohvaćanje nekoga određenog bloka B,
softver za upravljanje diskom treba znati točno gdje je blok B na disku.
Preslikavanje između broja bloka i fizičkih adresa diska obavlja
softver za upravljanje diskom.
www.ckm.ba - Leonardo Miljko
9. Organizacija i struktura baza podataka
• Jedna od osnovnih prednosti ovakve organizacije, ali ne i jedina,
jest da se sav programski kod koji je ovisan o vrsti uređaja (diska)
može izolirati unutar jedne komponente sustava (softvera za
upravljanje diskom) tako da sve komponente više razine, posebno
softver za upravljanje datotekom, mogu biti neovisne od
pojedinačnog uređaja (diska).
• Softver za upravljanje datotekom koristi mogućnosti softvera za
upravljanje diskom kako bi omogućio DBMS-u da „promatra“ disk
kao kolekciju datoteka. Svaki skup blokova u tom slučaju može
sadržavati nijednu ili više datoteka. Ovdje je bitno pripomenuti da
DBMS možda treba znati o postojanju skupova blokova, iako nije
odgovoran za upravljanje njima, a posebno DBMS treba znati
kada dvije datoteke dijele isti skup blokova ili kada dva sloga
dijele isti blok.
www.ckm.ba - Leonardo Miljko
10. Organizacija i struktura baza podataka
Računalni sustav ima nekoliko
različitih komponenti
(memorija) koje osiguravaju
pohranu podataka, a koje se
značajno razlikuju kako po
količini podataka koju mogu
pohraniti, tako i po brzini
pristupa pohranjenim
podacima.
Grafički prikaz hijerarhije
memorija,
na konceptualnoj razini.
www.ckm.ba - Leonardo Miljko
11. Organizacija i struktura baza podataka
Uočljivo da se na najnižoj razini hijerarhije memorija nalazi pričuvna
(cache) memorija. Podaci koji se nalaze u cache memoriji su kopije
određenih lokacija glavne memorije. Jedinica transfera između cach i
glavne memorije je obično mali broj bajtova. Kada računalo izvodi
zadane instrukcije prvo traži oboje i instrukcije i podatke koje instrukcije
koriste u cache memoriji, pa ako ih tu ne pronađe traži ih u glavnoj
memoriji.
Sljedeća razina u hijerarhiji memorije je glavna memorija, koja je središte
svih aktivnosti računala, kao što su izvršavanje instrukcija, manipuliranje
podacima i slično. Glavna memorija ima random pristup (slučajan
pristup) što znači da se bilo koji bajt može dobiti za istu količinu
utrošenog vremena.
Sljedeću razinu u hijerarhiji memorija je tzv. sekundarna memorija. Ona je
mnogo sporija ali bitno većeg kapaciteta za pohranu podataka od glavne
memorije. Današnja računala uglavnom koriste diskove kao sekundarnu
memoriju. www.ckm.ba - Leonardo Miljko
12. Organizacija i struktura baza podataka
Disk podržava i virtualnu memoriju i datotečni sustav.
Virtualna memorija omogućava pohranjivanje varijabli i podataka iz
datoteka koje koriste programi (aplikacije). Kako je virtualni
memorijski prostor na disku značajno veći nego uobičajena glavna
memorija, to se najveći dio sadržaja virtualne memorije
pohranjuje na disku. Sadržaj virtualne memorija se u blokovima
„prebacuje“ između diska i glavne memorije. Obično se blokovi
podataka u glavnoj memoriji nazivaju stranice.
Postoji i tzv. glavna memorija DBMS-a, odnosno namjera da DBMS
upravlja podacima putem glavne memorije. To ima značajne
prednosti ukoliko su to „manje“ količine podataka i mogu ostati u
glavnoj memoriji tj. ne mora se koristiti diskovni prostor za
virtualnu memoriju.
www.ckm.ba - Leonardo Miljko
13. Organizacija i struktura baza podataka
Međutim, velike baze podataka moraju osigurati upravljanje svojim
podacima izravno na disku. Datoteke se premještaju između diska i glavne
memorije u blokovima, a pod kontrolom su operacijskog sustava ili DBMS-a.
Premještanje bloka s diska u glavnu memoriju se naziva čitanje s diska (eng.
disk read), dok se premještanje bloka iz glavne memorije na disk naziva
zapis na disk (engl. disk write).
DBMS „radije“ upravlja blokovima podataka samostalno umjesto da taj
zadatak prepusti dijelu operacijskog sustava – sustavnom upravljanju
datotekama.
Tercijarna memorija omogućava pohranjivanje ogromnih količina
podataka a karakterizira je značajno veća brzina I/O operacija nego kod
sekundarne memorije.
Glavna memorija nudi jednako vrijeme pristupa bilo kojem podatku, a ni
disk nema većih odstupanja u brzini pristupa bilo kom podatku s diska, ali
kod tercijarne memorije vrijeme pristupa značajno varira, ovisno o blizini
I/O točke traženom podatku.
www.ckm.ba - Leonardo Miljko
14. Organizacija i struktura baza podataka
Osnovni pokretač razvoja struktura za pohranjivanje
i tehnologije pristupa podacima pohranjenim u bazama podataka
to što je vrijeme pristupa disku značajno sporije
nego vrijeme pristupa glavnoj memoriji.
Zato je osnovni cilj povećanja performansi baza podataka
minimizirati broj pristupa disku tj. diskovnih I/O operacija.
www.ckm.ba - Leonardo Miljko
15. Organizacija i struktura baza podataka
Prikaz podataka u bazi je prijelaz ili preslikavanje logičkog
(konceptualnog) pogleda na bazu podataka na fizičku razinu baze
podataka.
Na konceptualnoj razini bazu podataka čine (relacijske baze
podataka) relacija i atributi relacije, odnosno, kod objektno
orijentiranih baza podataka, klasa i njezini atributi.
Na primjer, ako na konceptualnoj razini treba prikazati podatke o djelatniku,
onda ukoliko je riječ o relacijskoj bazi, formira se relacija Djelatnik s
potrebnim atributima. Podaci koje je potrebno znati o svakom djelatniku
su: JMB, ime, prezime, datum rođenja i spol. Ali, ta relacija nam ništa ne
govori o konkretnim, stvarnim vrijednostima tih atributa za svakoga
pojedinog djelatnika. Stvarne vrijednosti pohranjuju se (pomoću
aplikativnih programa – tj. vanjske razine baze podataka) u n-torke
relacije koje u biti čine slogove na fizičkoj razini baze podataka.
www.ckm.ba - Leonardo Miljko
16. Organizacija i struktura baza podataka
Preslikavanje s konceptualne na fizičku razinu baze podataka
www.ckm.ba - Leonardo Miljko
17. Organizacija i struktura baza podataka
Uočljivo je da se relacija (na konceptualnoj razini) preslikava u n-torke tj.
slogove s zaglavljem na fizičkoj razini baze podataka. Slogovi se
sastoje od polja (atributa relacije), s tim da na fizičkoj razini svako
polje ima određenu duljinu u bajtovima i lokaciju koja je definirana
relativnom adresom unutar sloga.
Svakom zaglavlju pridružuju se n-torke tj. slogovi koji sadrže stvarne
vrijednosti atributa relacije.
Ovisno o tome spominju li se u kontekstu datotečnih sustava i
programskih jezika kao što su C, C++ ili Java, relacijskim ili objektno
orijentiranim bazama, često se za gotovo iste koncepte koriste
različiti izrazi.
www.ckm.ba - Leonardo Miljko
18. Organizacija i struktura baza podataka
Usporedni pregled izraza. Ipak, određene razlike postoje, npr. relacija
nema metode dok klasa obično ima metode.
www.ckm.ba - Leonardo Miljko
19. Organizacija i struktura baza podataka
ELEMENTI PODATAKA I POLJA
Osnovni podatkovni elementi su vrijednosti atributa u relacijskim ili
objektno orijentiranim bazama podataka. Oni se prikazuju
«poljima».
Polja se objedinjuju i formiraju «veće» elemente za pohranu
podataka: slogove, blokove i datoteke. Pošto je relacija skup n-
torki (redaka), a one su slične strukturi sloga, može se pretpostaviti
da se svaka n-torka pohranjuje na disk kao slog.
Jedan slog može zauzeti čitav ili dio bloka na disku, a unutar sloga
postoji po jedno polje za svaki atribut relacije (objekta).
www.ckm.ba - Leonardo Miljko
20. Organizacija i struktura baza podataka
SLOGOVI Atributi se polja koja se grupiraju zajedno u slogove. Zato je
svaka n-torka (redak) relacije slog. Također, govoreći općenito, svaki tip
sloga u sustavu za upravljanje bazom podataka mora imati shemu koja je
pohranjena u bazi podataka. Shema sadrži nazive i tipove podataka polja
unutar sloga, kao i njihovu relativnu poziciju (engl. «offset») unutar
sloga. Sustav za upravljanje bazom podataka konzultira shemu uvijek
kada treba pristupiti dijelovima sloga (poljima).
• Ako su sva polja unutar sloga fiksne duljine, onda je to najjednostavnija
situacija.
• Npr. relacija DJELATNIK ima šest polja:
jmb, 13-bajtni znakovni niz; ime, tip CHAR(20), 20-bajtni znakovni niz ; prezime,
također tip CHAR(20), 20-bajtni znakovni niz; datum_rodenja, tip DATE,
predstavljen s 10 bajtova; spol, 8-bajtni znakovni niz; napomena, tip
VARCHAR(255) što predstavljamo s 256-totnim bajtom
Jednostavno je izračunati da slog relacije DJELATNIK zauzima: 13+20+20+10+8+256
= 327 bajtova
www.ckm.ba - Leonardo Miljko
21. Organizacija i struktura baza podataka
Prikaz tog sloga dan je na slici. Naznačena je relativna pozicija svakog
polja, a ona je u biti broj bajtova. Tako npr. jmb počinje na 0-tom,
ime na 13-tom, prezime na 33-ćem, datum rođenja na 53-ćem,
spol na 63-ćem i napomena na 71-vom bajtu.
www.ckm.ba - Leonardo Miljko
22. Organizacija i struktura baza podataka
PRIKAZ BLOKOVA I ADRESA SLOGOVA
Slog se može prepoznati po svom bloku i relativnoj poziciji svoga
prvog bajta unutar bloka. Današnje se baze podataka obično
sastoje od serverskog procesa koji osigurava podatke pohranjene
na sekundarnoj memoriji (disku) za jedan ili više klijent procesa
koji su u biti aplikacije koje koriste podatke.
Klijent aplikacije koriste konvencionalni «virtualni» adresni prostor, a
on je danas obično 64 bita tj. oko 264 različitih adresa. Operacijski
sustav ili DBMS odlučuju koji dijelovi adresnog prostora se
trenutno alociraju u glavnoj memoriji, a hardver preslikava
(mapira) virtualni adresni prostor u fizičke lokacije u glavnoj
memoriji. U cilju pojednostavljenja, može se zanemariti
preslikavanje virtualno-u-fizičko, tako da se adresni prostor klijenta
može promatrati kao da je riječ o glavnoj memoriji.
www.ckm.ba - Leonardo Miljko
23. Organizacija i struktura baza podataka
Podaci na serveru se nalaze u adresnom prostoru baze podataka. Adresa tog
prostora ukazuje na blokove i vjerojatno relativne pozicije unutar bloka.
Razlikuje se nekoliko načina prikaza adresa ovog adresnog prostora:
1. Fizičke adrese. Postoje nizovi bajtova koji određuju mjesto bloka ili sloga unutar
sekundarne memorije (diska):
centralnog računala (engl. host) - na njemu je sekundarna memorija (ako je
baza podataka na više računala)
oznake diska ili drugog uređaja na kojem se nalazi blok
broja cilindara diska
broja tragova unutar cilindra
broja blokova unutar traga
relativne pozicije početka sloga unutar bloka.
2. Logičke adrese. Svaki blok ili slog ima «logičku adresu». Ona je proizvoljan niz
bajtova fiksne duljine. Posebna tablica (map table) služi za povezivanje logičkih s
fizičkim adresama, a pohranjena je na disku na poznatoj lokaciji.
www.ckm.ba - Leonardo Miljko
24. Organizacija i struktura baza podataka
Uvođenje tablice za preslikavanje («map» tablice) na prvi pogled se
može učiniti kao kompliciranje. Međutim, ona daje značajnu
fleksibilnost sustava. Naime, ukoliko se koristi ta tablica, onda svi
pokazivači na slog pokazuju na nju, i jedino što se mora napraviti
prigodom premještanja ili brisanja sloga jest promijeniti ulaz za taj
slog u tablici.
• Jedna od vrlo korisnih kombinacija fizičkih i logičkih adresa jest
držanje u svakom bloku tzv. offset tablice koja sadrži sve relativne
pozicije slogova unutar bloka.
www.ckm.ba - Leonardo Miljko
25. Organizacija i struktura baza podataka
Uočljivo da tablica raste od početka prema kraju bloka, dok se slogovi smještaju
počevši od kraja bloka. Ovakva strategija je korisna posebno kada su slogovi
različite duljine, jer se tada unaprijed ne zna koliko slogova će stati u blok, i ne
mora se inicijalno dodijeliti fiksna veličina zaglavlja bloka u tablici. Adresa sloga
je tada fizička adresa bloka plus relativna pozicija ulaza u «offset» tablicu bloka
za taj slog. Ovakva razina preusmjeravanja unutar bloka nudi mnoge prednosti
logičke adrese, bez potrebe za postojanjem globalne «map» tablice :
• može se premjestiti slog unutar bloka i sve što treba uraditi jest promijeniti ulaz
sloga u «offset» tablici, pokazivači na slog će ga još uvijek moći naći
• može se dopustiti premještanje sloga u drugi blok ako su ulazi «offset» tablice
dovoljno veliki da drže «preusmjerenu adresu» za taj slog.
• ako se slog obriše, može se u «offset» tablici postaviti graničnik (engl.
tombstone), specijalna vrijednost koja označava da je slog obrisan. Nakon što se
slog obriše, pokazivači na taj slog vode do graničnika, nakon čega se ili pokazivač
zamjenjuje null pokazivačem ili se podatkovna struktura modificira na drugi
način, kako bi odrazila brisanje sloga. Ako se ne bi postavi graničnik, pokazivač bi
mogao voditi do nekoga novog sloga i prouzrokovati iznenađujući i pogrešan
rezultat.
www.ckm.ba - Leonardo Miljko
26. Organizacija i struktura baza podataka
Svaki blok, slog, objekt ili drugi referentni podatak ima dva oblika
adrese:
• adresa u serverskom adresnom prostoru baze podataka, koja je
obično niz od osam ili više bajtova koji lociraju stavku (item) u
sekundarnoj memoriji računala (disku). Ta se adresa najčešće
naziva i adresa baze podataka.
• adresa u virtualnoj memoriji (pod uvjetom da se stavka trenutno
nalazi u virtualnoj memoriji). Ta adresa je obično duljine četiri
bajta i najčešće se naziva memorijska adresa.
www.ckm.ba - Leonardo Miljko
27. Organizacija i struktura baza podataka
PODACI I SLOGOVI VARIJABILNE DULJINE
U dosadašnjim razmatranjima jedna od osnovnih pretpostavki je bila
da je svaki podatak fiksne duljine. Međutim, često je potrebno
prikazati i sljedeće:
• podatak promjenjive veličine – (polja varijabilne duljine). To znači
da se koristi samo onoliko prostora kolika je stvarna duljina polja
• ponavljajuća polja se odnose na prikaz tipa veze između slogova
više prema više. Tada treba pohraniti onoliko referenci koliko je
povezanih objekata s danim objektom
• slogove varijabilnog formata kada unaprijed nisu poznata polja
koja čine slog, odnosno broj pojavljivanja svakoga pojedinog polja
• polja koja zauzimaju veliki memorijski prostor (npr. slike (GIF
formati, filmovi (MPEG formati) i slično
www.ckm.ba - Leonardo Miljko
28. Organizacija i struktura baza podataka
SLOGOVI S POLJIMA VARIJABILNE DULJINE
Ukoliko je jedno ili više polja unutar sloga varijabilne duljine, slog
mora sadržavati dovoljno informacija, kako bi se moglo pronaći
bilo koje polje unutar sloga. Jednostavna, ali učinkovita shema je
postaviti sva polja fiksne duljine ispred polja varijabilne duljine.
Tada zaglavlje sloga sadrži:
duljinu sloga
pokazivače (tj. relativne pozicije) na početke svih polja varijabilne
duljine. Međutim, ukoliko se polja varijabilne duljine uvijek
pojavljuju u istom redoslijedu, onda pokazivač ne treba jer je
poznato da slijedi odmah nakon polja fiksne duljine.
www.ckm.ba - Leonardo Miljko
29. Organizacija i struktura baza podataka
SLOGOVI S PONAVLJAJUĆIM POLJIMA
Ako slog sadrži varijabilan broj polja i ako je svako polje – F fiksne
duljine, onda je dovoljno grupirati sva polja F i pokazivač postaviti
u zaglavlje sloga. Naime, neka je L broj bajtova za neko polje F
označen. Slijedi da se relativnoj poziciji za polje F dodaju svi
cjelobrojni umnošci od L tj. 0L, 1L, 2L, 3L i tako dalje do kraja,
odnosno do pozicije koja označava relativnu poziciju za polje iza F.
Na osnovu duljine sloga zna se koliko ima pokazivača na članove
obitelji.
www.ckm.ba - Leonardo Miljko
30. Organizacija i struktura baza podataka
SLOGOVI VARIJABILNOG FORMATA
Složenija situacija od prethodno opisane (varijabilna duljina polja i
ponavljajuća polja) je promjenjiva shema sloga. Jednostavan
primjer slogova varijabilnog formata jest niz označenih polja (engl.
tagged fields), od kojih se svako sastoji od:
• informacije o ulozi tog polja, kao što je:
– naziv atributa ili polja
– tip polja, ako to nije očigledno iz imena polja ili neke već
raspoložive sheme informacija
– duljina polja, ako to nije očigledno iz tipa polja.
• vrijednosti polja.
www.ckm.ba - Leonardo Miljko
31. Organizacija i struktura baza podataka
POLJA VELIKOG KAPACITETA – BLOBS
Skraćenica BLOBS stoji za binarni veliki objekti (engl. Binary Large
ObjectS), a svrha im je omogućiti pohranu u polje baze podataka
slike, filma, audio zapisa, radarskih signala i sl. Kada se govori o
BLOB polju, moraju se razumjeti dvije stvari: način pohrane BLOBs-
ova i način pristupa BLOBS poljima.
• Zbog svoje veličine BLOBS polja se pohranjuju na više blokova u
slijedu. Uobičajeno je da se ti blokovi alociraju na poseban način,
vrlo često na cilindar ili na cilindre diska kako bi se s BLOBS-ovima
moglo efikasno manipulirati. Moguće je, također, pohraniti BLOBS i
na vezanu listu blokova. Vrlo često se radi osiguranja brzine
pristupa BLOBS-u on se dijeli (engl. stripe) i pohranjuje na nekoliko
diskova.
www.ckm.ba - Leonardo Miljko
32. Organizacija i struktura baza podataka
PROSTOR ZA SLOG VEĆI OD BLOKA
Primjer slogova koji se ne mogu smjestiti na jedan blok su bili BLOBS-ovi.
Slogovi koji zauzimaju više blokova se nazivaju razapinjući „spanned“.
Razapinjući slogovi se mogu pojaviti kada se cijeli slogovi pohranjuju u
blok, što dovodi do velikog gubitka prostora. Zato je poželjno jedan slog
podijeliti na dva ili više blokova. Dio sloga koji ostaje u jednom bloku
naziva se fragment sloga.
• Ako slog može biti razapinjući, onda taj slog i njegov fragment mora imati
neke dodatne informacije u zaglavlju :
• zaglavlje sloga ili fragmenta ima poseban bit koji označava fragment
• potreban je još jedan bit koji daje informaciju da li je to prvi ili zadnji
fragment za pripadajući slog
• ako postoji sljedeći i/ili prethodni fragment za isti slog, onda fragmentu
trebaju pokazivači na te druge fragmente.
www.ckm.ba - Leonardo Miljko
33. Organizacija i struktura baza podataka
UMETANJE, BRISANJE I AŽURIRANJE SLOGOVA (INSERT, DELETE, UPDATE)
Rad s podacima pohranjenim u bazi podataka podrazumijeva stalno
dodavanje novih podataka, izmjenu i brisanje postojećih. Operacije
mogu na fizičkoj razini baze podataka prouzročiti određene probleme. Te
operacije su složene za slogove fiksne i promjenjive duljine.
Kod umetanja novih podataka u već postojeću relaciju (ili u klasu), moguće
su sljedeće osnovne situacije:
slogovi relacije se ne pohranjuju u određenom redoslijedu
slogovi relacije (n-torke) se pohranjuju u nekom fiksnom redoslijedu (npr.
sortirani prema primarnom ključu).
Ukoliko se slogovi (n-torke) relacije ne pohranjuju u određenom redoslijedu,
onda je za umetanje (engl. insert) novog sloga potrebno ili pronaći blok s
nešto praznog prostora ili uzeti novi blok.
Međutim, situacija se usložnjava ako se slogovi relacije (n-torke) pohranjuju
u nekom redoslijedu.
www.ckm.ba - Leonardo Miljko
34. Organizacija i struktura baza podataka
Indeksne strukture
Da bi se u potpunosti razumjela fizička razina pohrane podataka unutar
baza podataka, neophodno je proanalizirati kako se mogu prikazati čitave
relacije, odnosno ekstenti klasa. Naime, nije dovoljno samo razasuti na
različitim blokovima slogove (n-torke relacije) ili objekte klase jer je tada
teško odgovoriti i na najjednostavnije upite tipa SELECT * FROM
DJELATNIK (tj. prikazati sadržaj svih n-torki relacije DJELATNIK).
Najjednostavnije rješenje je sekvencijalno (jedan za drugim) posjetiti
svaki slog relacije DJELATNIK tj. sve blokove na kojima su slogovi relacije
DJELATNIK. Pretpostavka je da postoji dovoljno informacija u zaglavlju
svakog bloka: gdje u bloku podataka počinje slog i kojoj relaciji pripada.
Rezerviranjem blokova ili možda cilindara diska samo za danu relaciju mogu
se postići mala poboljšanja. Pretpostavka je da određeni blokovi na
cilindrima diska sadrže slogove relacije DJELATNIK. Nije potrebno
pregledati cijeli disk kako bi se prikazali svi slogovi relacije.
www.ckm.ba - Leonardo Miljko
35. Organizacija i struktura baza podataka
Ako je potrebno pronaći sve slogove relacije DJELATNIK za koje je
vrijednost atributa spol jednak žena: SELECT * FROM DJELATNIK
WHERE spol='žena' onda je potrebno izgraditi indeksnu strukturu.
Indeks je vrijednost atributa (jednog ili više polja) u relaciji pomoću
koga se može pronaći cijeli slog. Indeksi se pohranjuju u posebnu
datoteku. Nju čine slogovi s dvije vrijednosti: vrijednost podatka i
pokazivač. Vrijednost podatka je vrijednost polja u slogu, a
pokazivač je fizička adresa sloga.
www.ckm.ba - Leonardo Miljko
36. Organizacija i struktura baza podataka
Cilj kreiranja indeksne datoteke je ubrzati pretraživanje.
Međutim, indeksi imaju i određene nedostatke. Prvi je usporavanje
operacija umetanja, brisanja i ažuriranja slogova. Na primjer, svaki
put kada se doda slog u datoteku podataka, treba dodati novi
indeks u datoteku indeksa.
Nažalost, ne postoje opća pravila kako kreirati indekse u bazi
podataka. Administrator baze podataka treba odgovoriti na pitanje
je li važnija operacija pretraživanja ili ažuriranja. Odgovor na to
pitanje je presudan za postavljanje ili nepostavljanje indeksa.
www.ckm.ba - Leonardo Miljko
37. Organizacija i struktura baza podataka
B-STABLO
Indeksna datoteka može biti velika datoteka kod baza podataka koje
zauzimaju veliki memorijski prostor. Takvu indeksnu datoteku je
teško pretražiti. Zato je nužno poboljšati organizaciju samog
indeksa. B-stablo je jedno takvo rješenje. To je organizacija indeksa
(struktura indeksa) koju podržava većina relacijskih baza podataka.
Jedan primjer B-stabla, na slici su vrijednosti 6, 8, 12, …, 97, 99 su
vrijednosti polja indeksa.
www.ckm.ba - Leonardo Miljko
38. Organizacija i struktura baza podataka
Stabla B* i B+
B stabla su efikasna u pretraživanju podataka. Efikasnost operacije
umetanja se može povećati. U opisanom algoritmu umetanja
ključa u čvor B-stabla bilo je potrebno dijeliti čvor. Promatra se
uvijek čvor roditelj i razlikuju dva slučaja:
a) u čvoru ima još mjesta za umetanje ključa i vrijednost ključa se
može pridružiti čvoru. Operacija umetanja je dovršena.
b) čvor je popunjen s maksimalnim brojem ključeva (maksimalni broj
ključeva je za jedan manji od reda B-stabla i jednak je (m-1), m je
red B-stabla. Novi ključ k se dodaje tom čvoru i dobiva čvor s m
ključeva
www.ckm.ba - Leonardo Miljko
39. Organizacija i struktura baza podataka
HASH INDEKS (hash adresiranje) je rezultat transformacije vrijednosti
atributa pomoću hash funkcije. Hash adresiranje ili jednostavno samo
hashing je tehnika koja osigurava izravan i brz pristup određenom slogu
pomoću poznate vrijednosti određenog polja. Polje je obično, ali ne i
neophodno, primarni ključ.
Algoritam hashiranja:
u bazi podataka slog se smješta na lokaciji čija je adresa (RID), ili možda
samo broj bloka, izračunata primjenom hash funkcije na vrijednost nekog
polja tog sloga. Izračunata adresa se naziva hash adresa.
tijekom pohranjivanja sloga, DBMS mu izračunava hash adresu i daje
instrukciju softveru za upravljanje datotekom da smjesti slog točno na tu
poziciju (adresu).
da bi se pronašao slog pohranjen na hash adresi, DBMS na temelju
vrijednosti polja transformira tu vrijednost u fizičku adresu i daje
instrukciju softveru za upravljanje datotekom da dohvati slog na
izračunatoj poziciji (adresi).
www.ckm.ba - Leonardo Miljko
40. Organizacija i struktura baza podataka
HASH INDEKS
Jedan od nedostataka hashinga. „Fizički slijed» slogova unutar
datoteke sigurno neće biti i redoslijed primarnog ključa, niti bilo
koji drugi redoslijed koji bi imao razumnu logičku interpretaciju. U
biti, za fizički slijed slogova unutar datoteke s hash strukturom
obično se kaže da ne predstavlja nikakav poseban logički slijed.
Druga slabost hashinga je kolizija. Ona nastupa kada dva ili više
različitih slogova imaju istu hash adresu.
Rastezljivi hashing
• Rastezljivi hashing (engl. extendable hashing) je varijacija osnovne
ideje hashinga koja ublažava prethodno opisane slabosti. U biti,
rastezljivi hashing jamči da broj potrebnih pristupa disk da bi se
locirao određeni slog, neće biti veći od dva. Najčešće je to samo
jedan, ma kako datoteka bila velika.
www.ckm.ba - Leonardo Miljko
41. Organizacija i struktura baza podataka
Multidimenzijski indeksi
Prikazane indeksne strukture su tzv. jednodimenzijski indeksi. Ti indeksi
služe za ubrzanje operacije pretraživanja. Ključ pretraživanja je jedan
atribut (polje), odnosno može biti i kombinacija dva ili više atributa,
ali i dalje su to jednodimenzijski indeksi jer se i u tom slučaju
promatra kao jedinstveni ključ za pretraživanje.
Naime, B-stablo polazi od toga da su svi ključevi sortirani, dok hash
indeks se može izračunati samo za unaprijed poznatu vrijednost
ključa.
Međutim, postoje aplikacije u kojima je pogled na podatke
dvodimenzijski ili multidimenzijsi. Dvije su osnovne kategorije tih
aplikacija:
• geografski informacijski sustavi (GIS)
• podatkovne kocke (engl. data cubes)
www.ckm.ba - Leonardo Miljko
42. Organizacija i struktura baza podataka
Multidimenzijski indeksi
Geografski informacijski sustavi (GIS) pohranjuju objekte obično u
dvodimanzijskom prostoru, a objekti mogu biti točke ili različiti
oblici (ceste, kuće, mostovi, vodovodne cijevi, električni kablovi i
sl.). Većina upita vezanih za GIS nisu uobičajeni SQL upiti, iako se,
uz određene napore, mogu izraziti i pomoću SQL-a.
Podatkovne kocke (data cubes), odnosno analiza podataka pomoću
više dimenzija (multidimenzijski pristup), danas se uglavnom
spominju vezano za sustave za potporu odlučivanju i skladišta
podataka.
Indeksne strukture koje podržavaju upite nad više dimenzija, spadaju
u jednu od sljedeće dvije kategorije :
– pristupi slični hash-tablicama
– pristupi slični stablima.
www.ckm.ba - Leonardo Miljko
43. Organizacija i struktura baza podataka
Strukture slične hash strukturama za višedimenzijske podatke
Dvije podatkovne strukture poopćavaju hash tablice koje se kreiraju
samo pomoću vrijednosti jednog atributa. Pokazivač na pretinac je
funkcija više atributa ili dimenzija. Jedna takva struktura je
«rešetkasta (grid) datoteka», a druga «podijeljena hash funkcija».
• Rešetkaste datoteke
Ideja rešetkaste (grid) datoteke je grupirati podatke tako da se mogu
smjestiti u rešetku koja se formira na temelju vrijednosti
dimenzija.
• Podijeljena hash funkcija
Hash funkcija može uzeti vrijednosti više atributa kao argument, iako
se obično služe vrijednostima jednog atributa.
www.ckm.ba - Leonardo Miljko
44. Organizacija i struktura baza podataka
Strukture slične stablima za višedimenziske podatke
Drugi tip struktura koji se, osim struktura sličnih hash datotekama,
koristi za više-dimenzijske podatke su strukture slične stablima.
Ove strukture su posebno korisne za upite bazirane na opsegu
vrijednosti, odnosno za upite bazirane na najbližim vrijednostima
kod višedimenziskih podataka.
Četiri osnovne strukture slične stablima:
Indeksi višestrukih ključeva
Kd-stabla
Quad stabla
R-stabla
www.ckm.ba - Leonardo Miljko
45. Organizacija i struktura baza podataka
Indeksi višestrukih ključeva (Multiple-key indexes)
Ukoliko, na primjer, postoji nekoliko atributa koji predstavljaju
dimenzije za točke podataka, te ukoliko se želi osigurati potpora za
upite bazirane na opsegu ili upite bazirane na najbližoj vrijednosti,
onda jednostavna shema u obliku stabla za pristup tim točkama je
indeks od indeksa. Općenito promatrano, radi se o stablu u kojem
su čvorovi na svakoj razini indeksi nekog atributa.
www.ckm.ba - Leonardo Miljko
Korijen stabla je indeks prvog od
dva atributa. Taj indeks može biti
bilo koji tip standardnog indeksa,
kao što je B-stablo ili hash
tablica. Indeks je povezan s
vrijednosti ključa za
pretraživanje tj. vrijednostima
prvog atributa, i on je pokazivač
na drugi indeks.
46. Organizacija i struktura baza podataka
Kd-stabla (k-dimenzijsko stablo pretraživanja) je podatkovna struktura
koja poopćava binarno stablo pretraživanja na višedimenzijske
podatke. Ideja kd-stabla se može prilagoditi i za pohrane podataka na
diskovima u blokovima.
Kd-stablo je binarno stablo u kojem lijevo dijete čvora roditelj je manje,
a desno veće od roditelja. Isti atribut se zadržava na jednoj razini (npr.
atribut plaća je na razini 1, 3, a atribut dob na razinama 2 i 4). Drugim
riječima, atributi na različitim razinama stabla su različiti pri čemu se
atributi (dimenzije) smjenjuju (rotiraju) na pojedinim razinama.
Ideja kd-stabla je primjenjiva i na sekundarnu memoriju (disk), ali je
potrebno učiniti dvije promijene:
• unutarnji čvorovi imaju jednu vrijednost atributa i pokazivače na
lijevo i desno dijete
• listovi stabla su blokovi podataka. Oni sadrže određen broj slogova
ovisno o kapacitetu bloka.
www.ckm.ba - Leonardo Miljko
47. Organizacija i struktura baza podataka
Quad stabla
Kod quad stabla, svaki unutarnji čvor odgovara četverokutnom
području s dvije dimenzije, ili k-dimenzijskoj kocki s k dimenzija.
Ako broj točaka u četverokutnom području nije veći od prostora u
bloku, onda se to četverokutno područje može promatrati kao list
stabla, i prikazati blokom koji sadrži njegove točke. Ako ima previše
točaka i ne mogu stati u blok, onda se četverokutno područje
promatra kao unutarnji čvor čija djeca korespondiraju s njegova
četiri kvadranta.
www.ckm.ba - Leonardo Miljko
48. Organizacija i struktura baza podataka
R-stabla (stablo regije) je podatkovna struktura koja primjenjuje principe
B-stabla na višedimenziske podatke, s tim da R-stablo predstavlja
podatke koji se sastoje od dvodimenziskih ili višedimenziskih
područja, a ona se nazivaju podatkovna područja. Unutarnji čvor R-
stabla odgovara nekom unutarnjem području, ili samo području koje
nije podatkovno područje. U suštini, područje može biti različitog
oblika, iako je ono u praksi najčešće pravokutnik. R-stablo umjesto
ključeva ima potpodručja koja predstavljaju sadržaj njegove «djece».
www.ckm.ba - Leonardo Miljko
Točkasti pravokutnici su podpodručja povezana
s četvero njihove «djece». Može se primijetiti
da podpodručja ne pokrivaju cijelo područje,
što je prihvatljivo sve dok su svi podaci
područja, koja leže unutar većeg područja,
unutar jednog od manjih područja. Ukoliko
to nije slučaj, dozvoljeno je da podpodručja
imaju prekoračenja, ali je poželjno da ona
budu što manja.
49. Organizacija i struktura baza podataka
Bitmap indeksi
Bitmap indeks za polje F je skup bit-vektora duljine n. Jedan vektor se
pridružuje jednoj mogućoj vrijednosti polja F., po jednog za svaku
moguću vrijednost koja se može pojaviti u polju F. Vektor za
vrijednost «v» ima 1 na poziciji «i» ako i-ti slog ima «v» u polju F,
odnosno ima 0 ako nema te vrijednosti.
Upravljanje bitmap indeksima postavlja najmanje tri bitna pitanja na koja
treba odgovoriti :
pronaći bit-vektor za zadanu vrijednost, ili bit-vektore koji odgovaraju
vrijednostima na zadanom opsegu. kako to efikasno uraditi?
kako efikasno pristupiti slogovima ako je rezultat upita skup slogova?
kako uskladiti bitmap indeks s promjenama koje nastaju dodavanjem
ili brisanjem slogova?
www.ckm.ba - Leonardo Miljko