new indeksna organizacija podatakapoincare.matf.bg.ac.rs/~gordana/indeksnaorganizacija.pdf · 2019....

19
INDEKSNA ORGANIZACIJA PODATAKA Gordana Pavlović-Lažetić Matematički fakultet, Beograd šk. 2018/19.

Upload: others

Post on 20-Oct-2020

2 views

Category:

Documents


0 download

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