1 / 25

Indekser

Indekser. Indekser. B-Trær Indeks bygget opp som tre-struktur. Benyttes typisk på foreign key.

dextra
Download Presentation

Indekser

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Indekser

  2. Indekser • B-Trær Indeks bygget opp som tre-struktur. Benyttes typisk på foreign key. • Hash-tabeller Nøkkel-tranformering. Benyttes typisk på primary key (ID). Clustered Index: Bestemmer fysisk rekkefølge på data i database-tabeller. Kun en clustered index pr tabell. Må alltid lages før non-clustered index. Må alltid lages før data plasseres i tabellen.

  3. Clustered Index / Non-Clustered Index Clustered Non-Clustered Index Data

  4. B-Trær Et B-Tre av orden m er definert ved følgende: - Roten er enten et løv eller har mellom 2 og m barn. - Alle ikke-løv (evnt. bortsett fra roten) har mellom [m/2] og m barn. - Alle løv befinner seg på samme nivå. 21 48 72 12 15 25 31 41 59 84 91 1-4-8-11 12-13 15-18-19 21-24 25-26 31-38 41-43-46 48-49-50 59-68 72-78 84-88 91-92-99

  5. B-trær Eks: Innsetting i et B-tre av orden 4 (1) 22:- 16:- 41:58 8,11,12 16,17 22,23,31 41,52 58,59,61

  6. B-trær Eks: Innsetting i et B-tre av orden 4 (2) 22:- 16:- 41:58 8,11,12 16,17,18 22,23,31 41,52 58,59,61

  7. B-trær Eks: Innsetting i et B-tre av orden 4 (3) 22:- 11:16 41:58 1,8 11,12 16,17,18 22,23,31 41,52 58,59,61

  8. B-trær Eks: Innsetting i et B-tre av orden 4 (4) 22:- 11:16 41:58 1,8 11,12 16,17 18,19 22,23,31 41,52 58,59,61

  9. B-trær Eks: Innsetting i et B-tre av orden 4 (5) 16:22 11:- 18:- 41:58 1,8 11,12 16,17 18,19 22,23,31 41,52 58,59,61

  10. B-trær Eks: Innsetting i et B-tre av orden 4 (6) 16:22 11:- 18:- 41:58 1,8 11,12 16,17 18,19 22,23 28,31 41,52 58,59,61

  11. B-trær Eks: Innsetting i et B-tre av orden 4 (7) 16:22 11:- 18:- 28:- 58:- 1,8 11,12 16,17 18,19 22,23 28,31 41,52 58,59,61

  12. B-trær Eks: Innsetting i et B-tre av orden 4 (8) 22:- 16:- 41:- 11:- 18:- 28:- 58:- 1,8 11,12 16,17 18,19 22,23 28,31 41,52 58,59,61

  13. Hashing / Nøkkel-transformering / Randomisering Key Transformed Key Hashing

  14. Nøkkel-transformering PNr = ID En-entydig sammenheng mellom PNr (Postnummer) og ID PNr ID 1 2 3 4 5 6 7 8 9 . . . 1 2 3 4 5 6 7 8 9 . . .

  15. Nøkkel-transformering Distrikt 6 4 7 2 1 KundeNr TverrSum

  16. Nøkkel-transformering 6 4 7 2 KundeNr 1 2 3 4 Vekttall 6 8 21 8 Produkt 6 4 7 2 3 KundeNr Siste siffer i tverrsummen av siste siffer i produktene

  17. Nøkkel-transformering PNr = ID En-entydig sammenheng mellom PNr (Postnummer) og ID PNr ID Ubenyttet 1 … 10000 32191 51877 77638 32191 51877 77638

  18. Hash-tabeller 34 4 67 7 8 1 21 3 73 8 62 7 68 7 86 9 3 34 1 1 67 6 2 2 4 8 3 3 1 21 4 4 Trans 34 ID 73 5 5 62 7 6 6 2 68 67 7 7 5 86 8 8 8 9 9 10 10

  19. Nøkkel-tranformering - Folding ID = 29384756 PostNr [ 1 - 1000 ] Nøkkel- transformering 2 9 3 8 4 7 5 6 + 7 6 9 4 + 1 7 7 0

  20. Nøkkel-transformering - Divisjon-rest-metoden ID = 29384756 PostNr [ 1 - 1000 ] Nøkkel- transformering 2 9 3 8 4 7 5 6 : 9 9 7 1 7 5

  21. Nøkkel-tranformering - Uheldig tranformering Tranformering av hvert tegn i Key til tilhørende ordinal-verdi: 1016 HSize = 10000 KeySize = 8 HValueMax = 8 * 127 = 1016 10000

  22. Ulike nøkkel-transformeringer Data Transformed Key Key int Hash1(char* Key, int HSize) { return ((int)Key[0] + (int)Key[1] + (int)Key[2]) % HSize; } int Hash2(char* Key, int HSize) { return ((int)Key[0] + 27 * (int)Key[1] + 729 * (int)Key[2]) % HSize; }

  23. Ulike nøkkel-transformeringer Data Transformed Key Key int Hash3(char* Key, int KeySize, int HSize) { int HashVal; HashVal = (int)Key[0]; for(int i = 1; i < KeySize; i++) HashVal = HashVal*32 + (int)Key[i]; HashVal = HashVal % Hsize; return HashVal; }

  24. Hashing a key to a database page - SQLBase 1. Transformer symbolsk key ved å la hvert tegn bli representert ved tilhørende ASCII-verdi. Deretter transformeres denne ASCII-verdien som vist nedenfor til et såkalt binært fullword (4 bytes). 1A. Del ASCII-key inn i 4-byte enheter. 1B. XOR alle 4-byte enhetene sammen til et 4-byte resultat (ingen key-del blir borte). 1C. Utfør bitwise complement (fjerner event. bias) 2. Transformer resultatet fra 1 (binary fullword) til et heltall i side-intervallet ved å ta divisjonsresten med minste primtall som er større enn eller lik antall sider. 3. Transformer output fra 2 til en fysisk side adresse ved å legge til start side-nummer for for første rad i tabellen.

  25. Hashing a key to a database page - SQLBase - Eks 1. 9 3 0 5 E J S M --> 57 51 48 53 69 74 83 77 ASCII 1A. Key1 = 57 51 48 53 Key2 = 69 74 83 77 1B. Key1 = 0011 1001 0011 0011 0011 0000 0011 0101 XOR Key2 = 0100 0101 0100 1010 0101 0011 0100 1101 ------------------------------------------------------------------------- = xKey = 0111 1100 0111 1001 0110 0011 0111 1000 = 124 121 99 120 ASCII 1C. ~xKey = 1000 0011 1000 0110 1001 1100 1000 0111 = 131 134 156 135 ASCII bfKey = 2206637191 (fullword key) 2. Page Adresses 0 - 1752 (1753 hash buckets) 2206637191 MOD 1753 = 1110 3. Første side-adresse for tabellen er 60 => Side-adresse = 1110 + 60 = 1170

More Related