140 likes | 208 Views
Learn about indexing in databases and how it helps optimize search operations. Explore techniques like search trees and hash indexes for rapid data retrieval. Understand storage structures and search complexities in both main memory and hard disk systems.
E N D
Het probleem • Ongeveer 10.000.000 auto’s in Nederland • Query: zoek op kenteken • Aannames • Eentuple (record) kostongeveer 400 bytes • Een disk block bevat 8 kbyte, dus 20 records per block • Een disk IO kost 5 msec • Maximalezoektijd (volledige table scan) • 10.000.000 / 20 = 500.000 disk IO • 2500 sec = 41:40 minuten • Gewenstezoektijd: < 1 sec
Main memory vsharddisk • Main memory • Typical size : 4 – 256 GB • Access time: 100 nsec • Volatile • Harddisk • Typical size : 0.5 – 4 TB • Access time: 5 msec (without clustering) • Non-volatile • Unit of traffic: block (2 – 32 kbyte)
De oplossing: indexering • Indexeringsteltons in staatomsneltezoeken op de waarde van eenattribuut • Indexeringondersteuntookingewikkeldevormen van query processing • Indexeringondersteunt primary key en uniqueness constraints
Indexering: hoe doe je dat? Twee fundamenteletechnieken • Zoekboom • Hash index Beideprincipestoepasbaarvoorzowel main memory als harddisk
Intermezzo • Voeg toe: 2 18 9 5 • Hoeveel knopen passen in de boom bij hoogte 10? • Hoeveel knopen passen in de boom bij hoogte N? • Hoeveel kost een zoekactie in een boom van grootte M doorgaans? • Voeg toe: 20 30 40 60 50
B-tree: karakteristieken • Veld: 4 byte integer • Pointer: 8 bytes • Block size: 8 kbyte • Vulling: 341 – 683 • 2 nivo’s: minimaal 116281 • 3 nivo’s: minimaal 39.651.621 • 4 nivo’s: minimaal13.521.270.961
Hash table • Reserveer 0..N buckets • Hashfunctief • Domein: allemogelijkeattribuutwaarden • Bereik: 0..N • Netjesverdeeld