Documente Academic
Documente Profesional
Documente Cultură
Indeci
Indeci
Cuprins
Stocarea fizica a datelor
Indexare - motivatie
Indeci ordonai
Indeci secveniali
B+-Arbori
Hashing
Hashing static
Hashing dinamic
Indexare - Motivaie
Bazele de date consum mult timp cutnd
b) Date secveniale/ordonate
sID
sNume medie
sID
sNume medie
20
Ioana
9.5
10
Tudor
8.55
40
Andrei
8.66
20
Ioana
9.5
10
Tudor
8.55
30
Maria
8.33
30
Maria
8.33
40
Andrei
8.66
70
Alex
9.33
70
Alex
9.33
Indexare Motivaie
Cutarea binar
Complexitate: log2(N)
(log2(100 000)=17)
Concepte de baz
Un index este asociat cu o cheie de cutare = atribut sau set de atribute
dintr-un fiier/tabel/relaie utilizate pentru a cuta nregistrri n fiier
Fiier index const din nregistrri index de forma
pointer
Tipuri de indeci
Indecsi ordonati:
fisiere secventiale
10
Index rar: conine intrri doar pentru unele valori a cheii de cutare
Aplicabil doar cnd nregistrrile sunt ordonate secvenial dup cheia de cutare
Balansul timp-spaiu
De obicei o intrare in index corespunde unui bloc din fisierul de date
Se determin nregistrarea index cu cea mai mare valoare a cheii de cutare <k
Se caut secvenial n fiier ncepnd cu nregistrarea spre care indic
nregistrarea index
Indeci multi-nivel
13
Indeci multi-nivel
14
Indeci secundari
n relaia Studenti sortat dup nume, care sunt studentii ce locuiesc in Cluj?
Soluia: index secundar (dens!)
Pentru a implementa relaia de tip unu-la-multi dintre index i datele
destinaie se utilizeaz referine la bucket-uri de pointeri
15
tergerea n
16
dac exist o intrare a cheii de cutare n index aceasta este nlocuit cu urmtoarea
valoare a cheii de cutare din fiier (n ordinea cheii de cutare)
dac urmtoarea valoare a cheii de cutare deja are o intrare n index, este efectuat
tergerea.
17
Indecsi ordonati:
B+-arbori
18
Indexul B+-arbore
mrete viteza de localizare i elimin necesitatea constant de
reorganizare
utilizai extensiv
19
Structura B+-arbore
(1)
20
21
Toate valorile cheii de cutare din subarborele spre care P1 indic sunt
mai mici dect K1
Pentru Pi, 2 i n 1, toate valorile cheii de cutare din subarborele
spre care indic sunt mai mari sau egale cu Ki1 i mai mici dect Ki
Toate valorile cheii de cutare din subarborele spre care indic Pn sunt
mai mari sau egale cu Kn1
Structura B+-arbore
(2)
nodul radacina are cel putin doi si cel mult m + 1 pointeri/descendenti (corespunzator,
cel putin una si cel mult m valori, ordonate crescator)
fiecare nod de pe un nivel intermediar are cel putin (m+1)/2 si cel mult m + 1
pointeri/descendenti (corespunzator, cel putin m/2 si cel mult m valori ordonate
crescator)
fiecare nod frunza are cel putin m/2 si cel mult m valori; toti pointerii fac trimitere catre
fisierul de date, cu exceptia ultimului pointer care face trimitere catre urmatorul nod
frunza (cu valori mai mari).
22
B+-arbore
Exemplu
23
B+-arbori
Observaii
etc
24
Interogri pe B+-arbori
Algoritm
Determinarea tuturor nregistrrilor cu valoarea k a cheii de cutare
1.
N=rdcina
2.
Repet
Caut n N cea mai mic valoare a cheii de cutare >k
Altfel N = Pn (k Kn1)
Pn N este nod frunz
3.
4.
25
Interogari
26
Interogri pe B+-arbori
Observaii
Ex:
Pentru 1 milion valori a cheii de cutare, cte noduri (blocuri pe disc) sunt
accesate la o cutare n B+-arbore? (4)
Dar dac se utilizeaz un index secvenial? (20)
27
Actualizri n B+-arbori
Inserarea
Determin nodul frunz n care va aprea valoarea cheii de cutare
Dac valoarea e deja prezent ntr-un nod frunz
1.
2.
1.
2.
3.
1.
2.
3.
28
Actualizri n B+-arbori
Inserarea: divizarea nodurilor
Actualizri n B+-arbori
Inserarea: Exemplu
Inseram valorile 14 si 16
30
Actualizri n B+-arbori
Inserarea: Exemplu(2)
Inseram valorile 8 si 10
31
Actualizri n B+-arbori
tergerea
1.
2.
3.
4.
Actualizri n B+-arbori
tergerea: Exemplu (1)
Stergem valorile 17 si 19
33
Actualizri n B+-arbori
tergerea: Exemplu (2)
Stergem valorile 5 si 7
34
B+-arbori
Eficiena
35
36
Indeci B-arbore
37
Indeci B-arbore
Exemplu
38
Indeci B-arbore
Observaii
Avantaje
Dezavantaje
Avantajele nu cntresc mai mult dect dezavantajele, B+arborii fiind preferai de ctre SGBD-uri
39
Indecsi ordonati:
indecsi multi-cheie
40
Acces multi-cheie
Dezavantaje:
41
Indeci multi-cheie
42
Eficiena
43
k-d arbori
44
45
Hashing
46
Funcii hash
Cerine
Uniformitate
Caracter aleatoriu
47
'Acatrinei:
'1000001 1100011 1100001 1110100 1110010 1101001 1101110 1100101 1101001'
h('Acatrinei') = 34%4 = 2.
48
Indeci hash
49
Indeci hash
Operaii
50
Cutarea:
Sandu: 01010011 01100001 01101110 01100100 01110101
h(Sandu) =20%4=0 -> scanarea bucketului 0
Inserarea:
Ionescu: 01001001 01101111 01101110 01100101 01110011
01100011 01110101
H(Ionescu)=32%4=0 -> inseram in fisierul de date si apoi in
bucketul 0 in index
tergerea: calcul hash, scanare bucket, stergere
Indeci hash
Performana
51
Hash dinamic
Soluii:
52
Hash extensibil
Structura general
i=2, i2 = i3 = i, i1 = i 1
53
Hash extensibil
Utilizare
toate intrrile care indic spre bucketul j vor avea acceai valoare pe primii ij bii
Se calculeaz h(Kj) = X
Se utilizeaz primii i bii ai lui X i se urmeaz pointerul ctre bucketul potrivit
54
Hash extensibil
Divizare bucket la inserare
Pentru a diviza bucketul j la inserarea unei valori Kj:
Dac i > ij
1.
Se aloc un nou bucket z i ij = iz = (ij + 1)
2.
Se actualizeaz a doua jumtate a tabelei de adrese a bucketurilor
pentru a indica spre z
3.
Se scot nregistrrile din j i sunt reinserate n j sau z
4.
Se recalculeaz adresa bucketului pentru Kj i se insereaz
Dac i = ij
1.
Dac se atinge o limit a lui i se utilizeaz bucketuri de exces
2.
Altfel
1.
2.
3.
55
Hash extensibil
tergere
56
Hash extensibil
Exemplu
Hash extensibil
Exemplu
58
Hash extensibil
Exemplu
59
Hash extensibil
Exemplu
60
Hash extensibil
Exemplu
61
Hash extensibil
Observaii
Beneficii
Dezavantaje
n practic:
62
Indecsi bitmap
63
Indeci bitmap
64
Indeci bitmap
Observaii
Implementare eficient:
65
66
tergere:
67
Indexarea n Oracle
Indeci hash nu sunt suportai dar exist suport pentru organizarea hash
static
68
Indexarea n Oracle
Considerente
69
Bibliografie
70