new indeksna organizacija podatakapoincare.matf.bg.ac.rs/~gordana/indeksnaorganizacija.pdf · 2019....
TRANSCRIPT
-
INDEKSNA ORGANIZACIJA
PODATAKA
Gordana Pavlović-Lažetić
Matematički fakultet, Beograd
šk. 2018/19.
-
Indeksna organizacija
• Ime po pristupnoj datoteci u sastavu fizičke reprezentacije
– indeksu.
• Nad jednom relacijom (datotekom podataka) može da
postoji jedan ili više indeksa.
• Indeksi imaju specifičnu strukturu i karakteristike u
odnosu na indeks kod indeks-sekvencijalne
reprezentacije.
• U ovom indeksu su prisutne sve vrednosti atributa nad
kojim se gradi indeks (indeks je gust).
• Ovaj indeks je dinamički i neposredno odražava sve
promene nad datotekom podataka.
2/19
-
Indeksna organizacija
• Logički, indeks I nad atributom (ili skupom atributa) A
relacije R u indeksnoj reprezentaciji ostvaruje
preslikavanje
dom(A) → P(R)
• Atribut A zove se atribut indeksiranja
3/19
-
Indeksna organizacija
• Zbog efikasnosti pristupa po raznim grupama atributa
najzastupljenija
• Najviše jedan indeks može biti grupišući (engl. clustering)
• Ostali indeksi su “obični”, negrupišući, i po njima je moguć
efikasan pristup slogovima.
4/19
-
Grupišući i negrupišući indeks
• Grupišući indeks ne mora biti izgrađen nad primarnim ključem.
• To je privilegovan indeks, omogućuje vrlo efikasnu obradu
(restrikciju, spajanje)
• Izgrađuje se u slučaju da je takva obrada relacije najčešća
• Održavanje fizičkog uređenja u slučaju grupišućeg indeksa
zahteva, kao kod indeks-sekvencijalne reprezentacije,
korišćenje posebne datoteke – zone prekoračenja
• Za razliku od indeks-sekvencijalne organizacije, indeks kod
indeksne organizacije omogućuje neposredan pristup svakoj
stranici i iz zone prekoračenja, bez korišćenja lanaca
prekoračenja.
5/19
-
Grupišući i negrupišući indeks - primer
6/19
-
Efikasnost izvršavanja jednorelacionih
upita
• Pretraživanje
• Indeks koristan samo za pristup slogovima po vrednosti
atributa indeksiranja (inače je pristup sekvencijalan).
• Indeksna reprezentacija relacije efikasna je samo u
slučaju izbora pojedinačnog sloga
• U slučaju obrade svih (ili velike grupe) slogova, u bilo kom
redosledu, sekvencijalni pristup slogovima efikasniji nego
pristup preko indeksa.
7/19
-
Efikasnost izvršavanja jednorelacionih
upita•
8/19
-
Primer izvršavanja jednorelacionog upita
SELECT IME
FROM P
WHERE DRZAVA = ’Srbija' AND BR_NASLOVA > 10
• Ako je nad datotekom podataka relacije P izgrađen indeks po atributu DRZAVA,
• izbor svih slogova sa DRZAVA = ’Srbija’ (pretraživanje indeksa)
• provera intervala za atribut BR_NASLOVA.
• Ako je indeks negrupišući, svaki takav slog može biti naposebnoj stranici (veliki broj slogova, restrikcija skupa).
• Ako je indeks grupišući, svi slogovi (bar iz datoteke podataka) sa istom vrednošću atributa DRZAVA nalaze se zajedno na stranici ili susednim stranicama, pa je pristup znatno efikasniji.
9/19
-
Primer izvršavanja jednorelacionog upita
• Ako nad relacijom P postoji indeks po atributu
BR_NASLOVA, a ne postoji indeks po atributu DRZAVA,
upotreba indeksa je dobra samo ako je indeks grupišući.
• Indeks: nalaženje prvog sloga sa vrednošću atributa BR_NASLOVA > 10,
• pretraživanje datoteke podataka se nastavlja sekvencijalno (sa lancima prekoračenja u zoni prekoračenja) do kraja.
• restrikcija se izvodi prema algoritmu intervalne restrikcije kao kod indeks-sekvencijalne organizacije
• Ako nad relacijom P nema nijednog od ovih indeksa,
pretražuju se svi slogovi datoteka DP i ZP, uz ispitivanje
uslova restrikcije za svaki slog.
10/19
-
Unošenje
• Ako postoji grupišući indeks, unošenje se sastoji od sledećih koraka:
• 1. novi slog se unosi u prvu slobodnu stranicu zone
prekoračenja;
• 2. pretraživanjem grupišućeg indeksa pronalazi se
element podataka
(vrednost atributa indeksiranja, {redni_broj_stranice})
koji se odnosi na slog sa istom ili prvom manjom vrednošću
atributa indeksiranja od odgovarajuće vrednosti unetog
sloga;
11/19
-
Unošenje
• 3. ako vrednost atributa indeksiranja u indeksu već postoji,
dodaje se broj stranice novog unetog sloga skupu brojeva
stranica u nađenom elementu podataka;
u suprotnom, unosi se u indeks novi element podataka
koji se odnosi na novi uneti slog
• 4. novi slog se “uvezuje” u odgovarajući lanac prekoračenja
(kao kod indeks-sekvencijalne organizacije) iza poslednjeg
sloga sa istom (ili prvom manjom) vrednošću atributa
indeksiranja (adresa je dobijena u koraku 2);
• 5. pretraživanjem svakog od negrupišućih indeksa pronalazi se
mesto za upis novog elementa podataka (kao u koraku 2), i
element podataka (ili samo redni broj stranice zone
prekoračenja) se tamo upisuje.
12/19
-
Unošenje
• U slučaju da ne postoji grupišući indeks, nema ni zone
prekoračenja, već je datoteka podataka jedina koja sadrži
fizičke slogove koji odgovaraju n-torkama relacije;
• unošenje novog sloga u tom slučaju sastoji se od
• upisa novog sloga u datoteku podataka (odgovara
koraku 1 prethodnog postupka) i
• upisa odgovarajućeg elementa podataka u svaki od
negrupišućih indeksa (korak 5).
13/19
-
Brisanje
• Brisanje sloga (slogova) sa zadatom vrednošću nekog
atributa sastoji se od sledećih radnji:
• 1. nalaženje sloga (preko indeksa, ako postoji nad datim
atributom, ili sekvencijalnim pretraživanjem);
• 2. obeležavanje sloga nevažećim ili fizičko brisanje sloga
sa uklanjanjem sloga iz odgovarajućeg lanca
prekoračenja (u slučaju postojanja grupišućeg indeksa);
• 3. za svaki postojeći indeks, brisanje sloga koji se odnosi
na izbrisani slog, uz dodatne neophodne izmene na
indeksnim datotekama.
14/19
-
Ažuriranje
• 1. nalaženje sloga (najbolje preko grupišućeg indeksa, ali
može i preko nekog drugog indeksa);
• 2. ažuriranje sloga i upis ažurirane stranice (ako atribut
indeksiranja grupišućeg indeksa nije ažuriran), odnosno
• obeležavanje sloga nevažećim(ili brisanje uz uklanjanje
iz lanca prekoračenja) i upis novog sloga sa ažuriranim
atributima (ako se ažurira i atribut indeksiranja
grupišućeg indeksa);
• 3. za svaki indeks, odgovarajuće ažuriranje indeksa.
15/19
-
Izvršavanje višerelacionih upita
• zavisi od pristupnih – indeksnih datoteka nad relacijama
koje učestvuju u upitu.
• Primer. Za relacije P i KP (pisac i autor), upit
SELECT IME
FROM P JOIN KP ON P.P_SIF = KP.P_SIF
WHERE P.DRZAVA = ’Srbija’ AND
KP.R_BROJ = 2
• izvršiće se na razne načine za različite indekse nad
relacijama P i KP.
16/19
-
Izvršavanje višerelacionih upita
• Ako postoje indeksi po atributima specifične restrikcije –
P.DRZAVA i KP.R_BROJ, a ne postoje indeksi po
atributima spajanja P_SIF ni u jednoj relaciji, upit se
izvršava tako što se
• prvo vrši indeksna restrikcija (relacije P po uslovu P.DRZAVA = ’Srbija’ i relacije KP po uslovu KP.R_BROJ = 2),
• zatim sortiranje (ako je potrebno) uz preostale restrikcije, i
• sekvencijalno prirodno spajanje (po P_SIF) dobijenih sortiranihdatoteka, uz projektovanje na atribute projekcije (IME).
17/19
-
Izvršavanje višerelacionih upita
• Ako pak postoji indeks po atributu specifične restrikcije
jedne relacije (npr. po atributu P.DRZAVA) i indeks po
atributu spajanja druge relacije (npr. po atributu
KP.P_SIF), upit se izvršava u dva koraka
• indeksna restrikcija (relacije P po uslovu P.DRZAVA = ’Srbija’).
• rezultat te restrikcije sekvencijalno se pretražuje, i svaki njegovslog, korišćenjem indeksa po atributu spajanja druge relacije (KP), spaja se sa odgovarajućim n-torkama te druge relacije, tj. sa slogovima odgovarajuće datoteke.
• U drugom koraku izvode se i preostale restrikcije (npr.
relacije KP po uslovuKP.R_BROJ = 2), kao i projekcija na
atribute projekcije (IME)
18/19
-
Izvršavanje višerelacionih upita
• indeksno spajanje
• Prirodno spajanje dve datoteke koje odgovaraju dvema
relacijama, od kojih jedna (npr. prva) ima indeks po
atributu spajanja.
• Fizičko polje koje odgovara atributu spajanja: polje
spajanja.
• Datoteke se spajaju tako što se druga datoteka čita
sekvencijalno, i za svaki slog, korišćenjem indeksa, pristupa se odgovarajućim slogovima prve datoteke.
• Slog druge i odgovarajući slogovi prve datoteke se
spajaju.
19/19