Advanced Databases Indexing Data files B-tree B-tree B-tree

advertisement
Indexing
Advanced Databases
Outline
Database indexing
– B-tree
– hashing
Text indexing
– inverted list
Casus: protein strings
– similarity
– dynamic programming
– q-gram indexing, BLAST
Indexering
1
2
Data files
B-tree
Ga
CREATE INDEX iname
ON table(column) USING BTREE;
vooralsnog uit van de simpelste
organisatie van de data file: de heap
Nieuw tupels worden achteraan
toegevoegd
Snelle toegang op een specifiek
attribuut wordt mogelijk gemaakt door
een index op dat attribuut
Gebalanceerde zoekboom
Geschikt voor extern geheugen (disk)
knoop correspondeert met block on disk (~16 kB)
access time block ~= 3-8 msec
Minimaal vullingsniveau gegarandeerd
3
B-tree
4
B-tree
Karakteristieken
een block heeft ruimte voor n waarden
en n+1 pointers
vanuit de bladeren wordt verwezen naar
de relevante data
elk blad verwijst naar het volgende blad
(evt. ook naar vorige)
een interne knoop heeft tenminste
↑(n+1)/2 pointers (behalve de root)
5
6
1
B-tree
Hash index
Karakteristieken
Typische waarden
–
–
–
–
CREATE INDEX iname ON table(column)
USING HASH (column)
4 byte integers, 8 byte pointers, block size 16kB
n = 1364, k = 682 (minimale vulling)
diepte=3: MaxEntries ~= 468000
diepte=4: MaxEntries ~= 300 miljoen
• schat (ruim) in hoeveel blocks je nodig hebt: M
• alloceer genoeg disk ruimte
• geef elk blok een virtueel adres: 0..M-1
• kies een hash-functie f die aan elke mogelijke
waarde van het attribuut een waarde uit de range
0..M-1 toevoegt
• elk bucket bevat pointers naar de actuele records
• er kunnen overflow buckets nodig zijn
• herstructurering / dynamische varianten
Zoeken: O(klog M)
Insert/delete: O(klog M)
Gedrag wordt vaak gezien als constante:
c = 2, 3 of 4
7
Database indexing
Aspect
Database indexing
B-tree
Hash index
O(log N)
O(1)
goed
redelijk
Unieke key
ja
ja
Support voor join
ja
ja
Range query
ja
nee
Search/update
Dynamisch gedrag
8
Nog wat kruimels
• Bitmap indices
• Multidimensional indices
• Clustering index
• Indexes for main memory (T-tree)
9
Text indexing
10
Inverted list
Basic structure:
inverted (list / file / index)
elk document heeft een unieke docid
voor elk woord in je dictionary / vocabulary /
lexicon is er een postings list van
voorkomens
postings lists zijn geschikte structuren voor
boolean retrieval
11
12
2
Boolean retrieval
Boolean retrieval
Query:
klimaatneutraal
AND comadrinken
AND NOT smirten
compressie
speed
van postings list
up van merge-scan:
– skip pointers
– vuistregel (heuristisch):
skip distance √|P|
|P| is lengte van list
Evaluatie:
Merge-scan op postings lists
13
14
3
Download