11.Indexstrukturen Vorlesung"Informationssysteme" Sommersemester2017 Gliederung § § § § § Motivation ISAM B-BäumeundB+-Bäume Hashverfahren MehrdimensionaleIndexe Informationssysteme2017 Kapitel11:Indexstrukturen 2 ÜberlegungenzuPerformance § Beobachtung • JeschnellerdieAnfrageberechnetwird,destobesser. • DatenpassennichtindenHauptspeicher. • EsliegenGrößenordnungenzwischenPerformanzdes HauptspeichersundderFestplatte. • Zugriffesindunglaublichteuer! • Insbesonderediewahlfreien(random access). § Wasmussgetanwerden? • EffizienteSpeicherungaufFestplatte • WiefindetmandiegesuchtenDatenmöglichstschnell? • WelcheGarantienkönnenbzgl."Laufzeit"gegebenwerden? Informationssysteme2017 Kapitel11:Indexstrukturen 3 GrundideeeinesIndex § Abbildung:Schlüsselà MengevonEinträgen § Beispiele: • MatrikelNummer à persönlicheDatendesStudenten • PLZà NameundandereInformationeneinerStadt • Termà alleDokumenteindenendieserTermenthaltenist § NatürlichmöchtemanbeidiesenhäufigauftretendenAnfragendie Antwortzeitgeringhalten. § DafürwirdeinIndexangelegt:EinIndexmaterialisiertdiese Abbildung! Informationssysteme2017 Kapitel11:Indexstrukturen 4 WasistmitderbinärenSuche? § Idee:SortiertesArray,dannbinärsuchen • 𝑂𝑂(𝑛𝑛log𝑛𝑛)KostenfürdasSortieren • waspassiert,wenneinneuerDatensatzeingefügtwerden muss? § BinärerSuchbaum,ambestenbalanciert(AVLoderrot-schwarz Baum) Aber.... § binäreSuchbäumesindfürDBMSungeeignet • zuhoherSpeicherverbrauch • schwerabzubildenaufExternspeicher • zuvieleCache-Misses (warum?) è vielzulangsam! Informationssysteme2017 Kapitel11:Indexstrukturen 5 Index-SequentialAccessMethod(ISAM) S1 D1 D2 ... Ds S2 ... Sk Dt ... ... Sm Du ... Dv ... Dw BestehtausSchlüsseln𝑆𝑆* undDatensätzen𝐷𝐷, . § SowohlSchlüsselalsauchDatenwerdengeordnetabgespeichert. § Suche: • BinäreSucheinSchlüsselnzurgewünschtenPosition • SequentiellesLeseninDatenseiten § Einfügen: • AuffindenderEinfügeposition (wiebeiSuche) • WaspassiertwenndieSeite,indieeingefügtwerdensoll,vollist? Nichtgut... § Löschen: • AuffindenderLöschposition(wiebeiSucheundEinfügen) • LöschendesDatensatzes.WaspassiertwenndieSeiteleerwird? Informationssysteme2017 Kapitel11:Indexstrukturen 6 Mehrwegbäume- Motivation § Beobachtung • BinäreBäumenichtoptimalfürFestplatten • Wichtig:AnpassungderKapazitätderKnotenanGrößederSeiten. • Warum? § Fanout • JebreiterderBaumdestoflacher(d.h.wenigertief). • Jeflacherdestoweniger"Sprünge"zwischenKnoten è WenigerZugriffeaufSeitenaufderFestplatte. Informationssysteme2017 Kapitel11:Indexstrukturen 7 Mehrwegbäume(2) § Vorfahr(1965):ISAM(statisch,periodischeReorganisation) § Weiterentwicklung:B- undB+-Baum • B-Baum:1970vonR.BayerundE.McCreight entwickelt • treffendeCharakterisierung:“TheUbiquitous B-Tree”* § Grundoperationen: (*) D. Comer: The Ubiquitous B-Tree. ACM Computing Surveys 11(2), 1979 • EinfügenundLöscheneinesSatzes • direkterSchlüsselzugriffaufeinenSatz • sortiertsequentiellerZugriffaufSatzbereiche è dynamischeReorganisationdurchSplittingundMischenvonSeiten § BalancierteStruktur,unabhängigvonSchlüsselmengeund Einfügereihenfolge § AusführlicheBetrachtungvonMehrwegbäumen(vonProf.Härder): http://wwwlgis.informatik.uni-kl.de/cms/fileadmin/courses/ss2007/ Informationssysteme/addons/mehrwegbaeume.full.pdf Informationssysteme2017 Kapitel11:Indexstrukturen 8 B-Bäume § Definition: Seik eineganzeZahl,k >0.EinB-BaumBmitGradk istentwederein leererBaumodereingeordneterSuchbaum mitfolgenden Eigenschaften: 1. JederPfadvonderWurzelzueinemBlatthatdiegleicheLänge. 2. JederKnotenmitderAusnahmederWurzelhatmindestensk und höchstens2kEinträge.DieWurzelhatzwischeneinemund2k Einträgen.DieEinträgewerdenindenKnotensortiertgehalten. 3. JederKnotenmitn Einträgen,außerdenBlättern,hatn+1Kinder. 4. SeienS1,...,Sn dieSchlüsseleinesKnotensmitn+1Kindern.P0,...Pn seiendieVerweiseaufdieKinder.Danngilt: a) b) c) d) P0 verweistaufdenTeilbaum mitSchlüsselnkleineralsS1. Pi (0<i<n)weistaufdenTeilbaum mitSchlüsselnzwischenSi undSi+1. Pn verweistaufdenTeilbaum mitSchlüsselngrößeralsSn. IndenBlattknotensinddieVerweisenichtdefiniert. Informationssysteme2017 Kapitel11:Indexstrukturen 9 B-Bäume– BeispielundEigenschaften § B-BaummitGrad2 • 12 • • 4 • 9 • • 1 • 2 • 3 • • 16 • 19 • • 10 • 11 • • 13 • 14 • 15 • • 5 • 6 • 7 • 8 • • 20 • 21 • 22 • 23 • • 17 • 18 • • InjedemKnotenstehendieSchlüsselinaufsteigenderOrdnungmit K1<K2<...<Kb. • JederSchlüsselhateineDoppelrollealsIdentifikator eines DatensatzesundalsWegweiser imBaum - Pi verweistaufTeilbaum mitSchlüsseln>Ki und<Ki+1 - indenBlattknotensinddieVerweiseundefiniert • AlleSchlüssel/Sätzekönnenalsosortiertaufgesuchtwerden • DerBaumistbzgl.derKnotenstrukturvollständigausgeglichen. • JederKnoten(außerderWurzel)istmindestenszurHälftegefüllt. Informationssysteme2017 Kapitel11:Indexstrukturen 10 B-Bäume- Knotenformat § FüreinenB-BaumergibtsichfolgendesKnotenformat: L b K1 D1 P0 K2 P1 D2 ... P2 Kb Pb-1 freier Platz Db Pb § Einträge(beiKnoten- oderSeitengrößeL) • DieFelderfür#Einträge(b),Schlüssel(Ki),Daten(Di)undZeiger habendiefestenLängenlb,lK,lD undlp. " L − lb − l p $ • MaximaleAnzahlvonEinträgenproKnoten: bmax = " $ = 2k # lK + l D + l p % § WassindtypischeGrößeninB-Bäumen? • (inByte:)L=8192,lb =2,lP =4,lK =8,lD =88 à k =40 • BeiausgelagertenDaten:lD =4(VerweisaufDatenseite) à k =255 Informationssysteme2017 Kapitel11:Indexstrukturen 11 B-Bäume- Einfügen § EinfügeninB-Bäumen:Wurzelläuftüber K1 K2 ... K2k K2k+1 § FundamentaleOperation:Split-Vorgang • AnforderungeinerneuenSeiteund • AufteilungderSchlüsselmengenachfolgendemPrinzip K1 ... Kk Kk+1 Kk+2 ... K2k+1 • DermittlereSchlüssel(Median)undderVerweisaufdieneueSeite werdenzumVaterknotengereicht. • Ggf.musseinVaterknotenangelegtwerden(Anforderungeiner neuenSeite). Informationssysteme2017 Kapitel11:Indexstrukturen 12 B-Bäume- Einfügealgorithmus § ErmittleBlattknoten • SuchenachdemKnotenPn,indemdasneueElementgespeichert werdensoll(immereinBlatt) • FügeneuesElementKj indenermitteltenKnotenPn ein - ElementEinfügen(Pn,Kj, ∅) § ElementEinfügen(P,K,V) • SucheEinfügepositionfürKinP • WennPlatzvorhandenist,speichereElementKundV,sonstschaffe PlatzdurchSplit-Vorgangundfügeein. FordereneueSeite(P‘)an ErmittleMedianKk+1 für2k+1Schlüsseleinträge(inkl.Kj) SpeichereElementemitK<Kk+1 inP,K>Kk+1 inP‘ FügeKk+1 undVerweisaufP‘indieVaterseiteein,fallsdiesevorhandenist: ElementEinfügen(Vater(P),Kk+1,V(P‘)) - Ansonsten:neueWurzelseitemitV(P),Kk+1,V(P‘) - ➭ Split-VorgangalsallgemeinesWartungsprinzip Informationssysteme2017 Kapitel11:Indexstrukturen 13 B-Bäume– AllgemeinerSplitvorgang ... Kn Kn+1 ... Pn+1 Pn K1 P0 ... P1 Kk Pk Pk-1 ... Kk+1 Kn ... K2k Pk+1 Kk+1 K2k+1 P2k Kn+1 P2k+1 ... Pn+1 P‘ Pn K1 P0 Informationssysteme2017 ... P1 Kk Pk-1 Kk+2 Pk Pk+1 ... K2k+1 Pk+2 Kapitel11:Indexstrukturen P2k+1 14 AufbaueinesB-BaumesmitGrad2 Einfügereihenfolge: 77 77 12 12 48 48 69 69 33 33 89 89 95 95 90 90 37 37 45 45 83 83 2 15 15 87 87 97 97 98 98 99 99 50 50 Informationssysteme2017 Kapitel11:Indexstrukturen 15 AufbaueinesB-BaumesmitGrad2(1) Einfügereihenfolge: 77 12 48 69 33 33 89 89 95 95 90 90 37 37 45 45 83 83 2 15 15 87 87 97 97 98 98 99 99 50 50 77 12 Informationssysteme2017 77 48 77 69 77 Kapitel11:Indexstrukturen 17 AufbaueinesB-BaumesmitGrad2(2) Einfügereihenfolge: 77 12 48 69 33 89 95 90 90 37 37 45 45 83 83 2 15 15 87 87 97 97 98 98 99 99 50 50 48 12 Informationssysteme2017 33 69 7777 89 95 Kapitel11:Indexstrukturen 19 AufbaueinesB-BaumesmitGrad2(3) Einfügereihenfolge: 77 12 48 69 33 89 95 90 37 37 45 45 83 83 2 15 15 87 87 97 97 98 98 99 99 50 50 48 12 Informationssysteme2017 33 89 69 77 Kapitel11:Indexstrukturen 90 95 21 AufbaueinesB-BaumesmitGrad2(4) Einfügereihenfolge: 77 12 48 69 33 89 95 90 37 45 83 2 15 15 87 87 97 97 98 98 99 99 50 50 48 12 Informationssysteme2017 33 37 45 89 69 77 83 Kapitel11:Indexstrukturen 90 95 23 AufbaueinesB-BaumesmitGrad2(5) Einfügereihenfolge: 77 12 48 69 33 89 95 90 37 45 83 2 15 15 87 87 97 97 98 98 99 99 50 50 33 2 12 Informationssysteme2017 37 45 48 89 69 77 83 Kapitel11:Indexstrukturen 90 95 25 AufbaueinesB-BaumesmitGrad2(6) Einfügereihenfolge: 77 12 48 69 33 89 95 90 37 45 83 2 15 87 97 98 99 99 50 50 33 2 12 Informationssysteme2017 15 37 45 48 89 69 77 83 87 Kapitel11:Indexstrukturen 90 95 97 98 27 AufbaueinesB-BaumesmitGrad2(7) Einfügereihenfolge: 77 12 48 69 33 89 95 90 37 45 83 2 15 87 97 98 99 50 50 33 48 89 97 98 2 12 Informationssysteme2017 15 37 45 69 77 83 87 Kapitel11:Indexstrukturen 90 95 97 99 98 29 AufbaueinesB-BaumesmitGrad2(8) Einfügereihenfolge: 77 12 48 69 33 89 95 90 37 45 83 2 15 87 97 98 99 50 33 48 89 77 77 97 89 97 83 2 12 Informationssysteme2017 15 37 45 69 50 77 69 83 87 Kapitel11:Indexstrukturen 87 98 90 95 97 99 98 31 AufbaueinesB-BaumesmitGrad2(9) Einfügereihenfolge: 77 12 48 69 33 89 95 90 37 45 83 2 15 87 97 98 99 50 77 33 48 77 89 89 97 83 2 12 Informationssysteme2017 15 37 45 69 50 77 69 83 87 Kapitel11:Indexstrukturen 87 98 90 95 97 99 98 33 B-Bäume- Löschen DieB-Baum-Eigenschaftmusswiederhergestelltwerden,wenndie AnzahlderElementeineinemKnotenkleineralskwird.Durch Ausgleich mitElementenauseinerNachbarseiteoderdurch Mischen (Konkatenation)miteinerNachbarseitewirddieses Problemgelöst. (1)Maßnahme:AusgleichdurchVerschiebenvonSchlüsseln BeimAusgleichsvorgangsindinderSeitePk–1ElementeundinP’ mehralskElemente. ... K K‘ K ... n-1 P‘ Kn-1 P‘ Kn+1 ... P0 ‘ ... Kb-1‘ P1 ‘ Pb-1‘ Kn P b‘ K1 P0 ... Kk-1 P1 Pk-1 P K1‘ P0 ‘ Kn n+1 P K1‘ ... b ... P1 ‘ Informationssysteme2017 Kb‘ K1 P b‘ P0 ... P1 Kk-1 Pk-1 Kapitel11:Indexstrukturen 34 B-Bäume– Löschen(2) (2)Maßnahme:Mischen vonSeiten ... Kn-1 Kn Kn+1 P‘ ... P K1‘ P0‘ ... Kk‘ P1‘ K1 Pk‘ ... P0 Kn-1 Kn+1 ... Kk-1 P1 Pk-1 ... P‘ K1‘ P0‘ Informationssysteme2017 ... P1‘ Kn Kk‘ Pk‘ K1 P0 ... P1 Kk-1 Pk-1 Kapitel11:Indexstrukturen 35 B-Bäume- Löschalgorithmus 1. LöscheninBlattseite • SuchexinSeiteP • EntfernexinPundwenn a) b≥kinP:tuenichts b) b=k–1inPundb>kinP’:gleicheUnterlaufüberP’aus c) b=k–1inPundb=kinP’:mischePundP’. 2. LöschenininnererSeite • Suchex • Ersetzex=Ki durchkleinstenSchlüsselyinB(Pi)odergrößten SchlüsselyinB(Pi-1)(nächstgrößererodernächstkleinerer SchlüsselimBaum) • EntferneyimBlattP • BehandlePwieunter(1) Informationssysteme2017 Kapitel11:Indexstrukturen 36 B-Bäume– Löschbeispiele(3) 11 1 3 9 15 Lösche 21: (Ausgleich) 17 11 X 1 3 9 15 19 18 21 X 25 19 25 19 25 18 17 Lösche 11: (innerer Knoten) 15 1 3 9 18 17 Mischen: 15 1 Informationssysteme2017 3 9 17 18 X 19 25 Kapitel11:Indexstrukturen X 37 B+-BäumeimVergleichzuB-Bäumen InB-Bäumen spielendieEinträge(Ki,Di,Pi)indeninnerenKnoten zweiganzverschiedeneRollen: • DiezumSchlüsselKi gehörendenDatenDi werdengespeichert. • DerSchlüsselKi dientalsWegweiserimBaum. FürdiesezweiteRolleistDi vollkommenbedeutungslos.In B+-Bäumen wirdininnerenKnotennurdieWegweiser-Funktion ausgenutzt,d.h.,essindnur(Ki,Pi)alsEinträgezuführen. • WirsparenalsoPlatzindeninnerenKnotenundkönnenmehr Wegweiser-Einträgedortspeichern • DerFan-outerhöhtsichbeträchtlich,derBaumwirdflacher Informationssysteme2017 Kapitel11:Indexstrukturen 38 B+-BäumeimVergleichzuB-Bäumen(2) § DieInformation(Ki,Di)wirdindenBlattknotenabgelegt. § FüreinigeKi ergibtsicheineredundanteSpeicherung.Dieinneren KnotenbildenalsoeinenIndex(index part),dereinenschnellen direktenZugriffzudenSchlüsselngestattet. § DieBlätterenthaltenalleSchlüsselmitihrenzugehörigenDatenin Sortierreihenfolge.DurchVerkettungallerBlattknoten(sequence set)lässtsicheineeffizientesequentielleVerarbeitungerreichen, diebeimB-BaumeinenumständlichenDurchlaufinsymmetrischer Ordnungerforderte. ➭ DiefürdenpraktischenEinsatzwichtigsteVariantedesB-Baumsist derB+-Baum. Informationssysteme2017 Kapitel11:Indexstrukturen 39 B+-Bäume- Erklärungsmodell DerB+-Baumlässtsichauffassenalseinegekettete sequentielleDateivonBlättern,dieeinenIndexteil besitzt,der selbsteinB-Baumist.ImIndexteilwerdeninsbesonderebeim Split-VorgangdieOperationendesB-Baumseingesetzt. Indexteil: B-Baum von Schlüsseln 13 3 1 6 10 16 2 10 11 12 3 4 5 6 7 8 9 19 21 13 14 15 16 17 18 21 22 23 19 20 sequentielle sortierte Datei der Blätter Informationssysteme2017 Kapitel11:Indexstrukturen 40 B+-Bäume- Definition Der so definierte Baum heißt in der Literatur gelegentlich auch B*-Baum. § Definition: Seienk,undk*ganzeZahlen,k,k*>0.EinB+-BaumBvomTyp(k,k*)ist entwedereinleererBaumodereingeordneterSuchbaum,fürdengilt: 1. JederPfadvonderWurzelzueinemBlattbesitztdiegleicheLänge. 2. JederKnoten- außerWurzelnundBlättern- hatmindestensk und höchstens2kEinträge.Blätterhabenmindestensk*undhöchstens 2k*Einträge.DieWurzelhatentwedermaximal2kEinträgeodersie isteinBlattmitmaximal2k*Einträgen. 3. JederKnotenmitn Einträgen,außerdenBlättern,hatn+1 Kinder. 4. SeienR1,...Rn dieReferenzschlüsseleinesinnerenKnotens(d.h. auchderWurzel)mitn+1Kindern.SeienV0,...,Vn dieVerweiseauf dieseKinder.Danngilt: a) b) c) V0 verweistaufdenTeilbaum mitSchlüsselnkleineralsR1. Vi (0<i<n)weistaufdenTeilbaum mitSchlüsselnzwischenRi undRi+1 (einschließlichRi). Vn verweistaufdenTeilbaum mitSchlüsselngrößerodergleichRn Informationssysteme2017 Kapitel11:Indexstrukturen 41 B+-Bäume- Knotenformate § UnterscheidungvonzweiKnotenformaten: • M:KennungdesSeitentyps+#Einträge;festeLängeL • innereKnoten(k≤b≤2k) L - L=lM +lp +2k(lK +lp) M # L − lM − l p % k =# % $ 2 ∗ (lK + l p ) & K1 P0 ... P1 freier Platz Kb Pb-1 Pb • Blattknoten(k*≤m≤2k*) - L=lM +2lp +2k*(lK +lD) # L − lM − 2l p % k* = # % 2 ∗ (l + l ) $ K D & M PPRIOR K1 D1 ... Km Dm freier Platz PNEXT § WassindtypischeGrößeninB+-Bäumen? (inByte:)L=8192,lM=4,lP =4,lK =8,lD =88 InnererKnoten:k=341;Blatt:k*=42 Informationssysteme2017 Kapitel11:Indexstrukturen 42 B+-Bäume– Beispiel § B+-BaumdesTyps(3,2) 3 1 6 13 10 16 2 10 11 12 3 4 5 6 7 8 9 19 21 13 14 15 16 17 18 21 22 23 19 20 • JederKnotenhatdieGrößeeinesI/OBlocks. • EinKnotenistzumindestens50%gefüllt. • DasLeseneinesKnotensverursachttypischerweiseeinen wahlfreienZugriffaufFestplatte • EinB+Baumisti.d.R.sehr flach,d.h.Sucheverursachtnur wenigewahlfreieZugriffe. • Zudem,dieersten1-2EbenendesBaumssindi.d.R.im Hauptspeicher"gecached". Informationssysteme2017 Kapitel11:Indexstrukturen 43 B+-Bäume- Grundoperationen (1)DirekteSuche: DaalleSchlüsselindenBlätternsind,kostetdiedirekteSucheh+ Zugriffe.h+ istjedochimMittelkleineralshinB-Bäumen.Dafavg beimB-Baumgutmithabgeschätztwerdenkann,erhältmanalso durchdenB+-BaumeineeffizientereUnterstützungderdirekten Suche. (2)SequentielleSuche: SieerfolgtnachAufsuchendesLinksaußenderStrukturunter AusnutzungderVerkettungderBlattseiten.Essindzwarggf.mehr BlätteralsbeimB-Baumzuverarbeiten,dochdanurh+–1innere Knotenaufzusuchensind,wirddiesequentielleSucheebenfalls effizienterablaufen. Informationssysteme2017 Kapitel11:Indexstrukturen 44 B+-Bäume– Grundoperationen(2) (3)Einfügen: EsistvonderDurchführungundvomLeistungsverhaltenherdem EinfügenineinenB-Baumsehrähnlich.BeiinnerenKnotenwird dasSplittinganalogzumB-Baumdurchgeführt.BeimSplit-Vorgang einerBlattseitemussgewährleistetsein,dassjeweilsdie niedrigstenSchlüsseleinerSeitealsWegweiserinden Vaterknotenkopiertwerden. DieVerallgemeinerungdesSplit-VorgangsistanalogzumB-Baum. (4)Löschen: DatenelementewerdenimmervoneinemBlattentfernt(keine komplexeFallunterscheidungwiebeimB-Baum).Weiterhinmuss beimLöscheneinesSchlüsselsauseinemBlattdieserSchlüssel nichtausdemIndexteilentferntwerden;erbehältseineFunktion alsWegweiser. DasMischenvonBlattknotenführtzurLöschungdesWegweisers imVaterknoten. Informationssysteme2017 Kapitel11:Indexstrukturen 45 B+-Bäume- Einfügebeispiel 15 < 1 5 9 12 15 19 28 33 53 71 33 37 41 46 ≥ 53 59 67 95 71 83 99 Einfügen von 45 41 15 1 5 9 12 Informationssysteme2017 33 15 19 28 53 33 37 41 45 46 Kapitel11:Indexstrukturen 71 53 59 67 95 71 83 99 46 B+-Bäume– AllgemeinerSplitvorgang ... K1 D1 ... K1 Kk* Dk* Kk+1* Dk+1* ... ... K1 D1 ... Kk* Dk* Informationssysteme2017 ... K1 Kk+1* K2k*D2k* KD ... Kk+1* Dk+1* ... K D ... K2k*D2k* Kapitel11:Indexstrukturen 47 B+-Bäume- Löschen 45 Lösche 28, 41, 46 15 1 5 9 12 Unterlauf à Ausgleich 33 X 15 19 28 15 5 45 46 X Lösche 53 1 X X 33 37 41 9 12 1 5 Informationssysteme2017 9 12 X 33 37 15 19 53 59 67 59 X Mischen 45 53 15 71 71 83 99 45 33 15 19 53 33 33 37 45 71 59 67 71 83 99 Mischen 71 45 59 67 Kapitel11:Indexstrukturen 71 83 99 48 B*-Bäume § Verbesserungdes Belegungsgrades • verallgemeinerte Überlaufbehandlung • Split-Faktorm>1 Pi Pk m=1 Pi Pi+1 Pi Pk Pi+1 Pi-1 Pi Pi+1 m=2 è Verbesserte Speicherplatzbelegung,dafür höhereEinfügekosten m=3 Pi-1 Informationssysteme2017 Pi Kapitel11:Indexstrukturen 1 Pi 2 Pk Pi+1 49 B*-Bäume– Belegungsgrad § WelcherBelegungsgradβdesB*-Baumswirderzielt • beieinfacherÜberlaufbehandlung(Split-Faktorm=1)? • beimEinfügeneinersortiertenSchlüsselfolge? § SpeicherplatzbelegungalsFunktiondesSplit-Faktors Belegung Split-Faktor βmin βavg βmax 1 1/2=50% ln2≈69% 1 2 2/3=66% 2× ln(3/2)≈81% 1 3 3/4 =75% 3× ln(4/3)≈86% 1 m m/(m+1) m× ln((m+1)/m) 1 Informationssysteme2017 Kapitel11:Indexstrukturen 50 B+-Bäume– Präfix-B+-Bäume WegenderausschließlichenWegweiser-FunktionderSchlüsselinden innerenKnotenistesnichtnötig,dieOptimierungsmaßnahmenaufdie Schlüsselzustützen,dieindenBlattknotentatsächlichvorkommen. ➭ EinsatzvonminimalenSeparatorenalsWegweiser • Beispiel:KonstruktionirgendeinesSeparatorsS mitderEigenschaft Cookiemonster≤S<Ernie ... • D • ... • Bigbird • Burt • Cookiemonster • • Ernie • Grouch • Snuffleopoggus • § VerbesserungderBaumbreite(fan-out) • ErhöhungderAnzahlderZeigerindeninneren Knoten • SchlüsselkomprimierungundNutzungvon„Wegweisern” • VariabellangeEinträgeerfordernKontrolledesUnterlaufsüberdie tatsächlicheSpeicherplatzbelegung R. Bayer, K. Unterauer: Prefix B-trees. ACM TODS 2, 1 (March 1977) Informationssysteme2017 Kapitel11:Indexstrukturen 51 Präfix-Eigenschaft SinddieSchlüsselWorteübereinemAlphabetundistdieOrdnung derSchlüsselinalphabetischer(lexikographischer)Ordnung,dann giltfolgendeEigenschaft: § Präfix-Eigenschaft: • SeienxundyzweiSchlüssel,sodassx<y.Danngibteseinen eindeutigenPräfixŷvonymit: (a)ŷisteinSeparatorzwischenxundyund (b)keinandererSeparatorzwischenxundyistkürzeralsŷ. § BeimSpliteinerBlattseite mitSplitzwischenxundywirdnunŷals WegweiserfürdenVaterknotenbestimmt. § Eskannauchsinnvollsein,Index-Knotennichtgenauinder"Mitte" zusplitten,sonderneineleichteAbweichungdavonzuzulassen. Wieso?WasisteinguterSeparatorzwischenDonaudampfschifffahrtsdampferherstellerundDonaudampfschifffahrtsgesellschaft? Informationssysteme2017 Kapitel11:Indexstrukturen 52 Bulkloading § Problemstellung • GegebeneinegroßeMengeanDatensätzen • WiekanneinB+Baumdarüberaufgebautwerden? • DasProblemistnatürlichallgemeinerundtrittauchbeianderen Bäumen/Indexstrukturenauf. § NaiveMöglichkeit • DatensätzeeinzelnnachundnachinB+Baumeinfügen • D.h.eswirdimmervonderWurzelabnachderpassenden Einfügestellegesucht • Nichtsehreffizient(auchwenndieoberenEbenenineinemDB-Puffer sind) § Idee • SortiereDatenvor(resultiertinsortierteListevonSeiten) • DannbaueBaumauf,indemDatenseitenderReihenachhinzugefügt werden Informationssysteme2017 Kapitel11:Indexstrukturen 53 Ablaufbeispiel § Annahme:derB+-Baumkann2EinträgeproSeitespeichern. § WirbeginnenmiteinerleerenWurzelundfügenimmerganze Seitenein,hierzuerstdieSeitemitEinträgen3und4. Wurzel Sortierte Seiten, noch nicht im B+-Baum 3 4 6 Informationssysteme2017 9 10 11 12 13 20 22 23 31 Kapitel11:Indexstrukturen 35 36 38 41 44 54 Ablaufbeispiel(2) § NachdemdiebeidenfolgendenSeiteneingefügtwordensindist dieWurzelnunvoll. § BeimEinfügenvon(12,13)mussdieWurzelalsoaufgeteiltwerden. Wurzel 6 10 Sortierte Seiten, noch nicht im B+-Baum 3 4 6 Informationssysteme2017 9 10 11 12 13 20 22 23 31 Kapitel11:Indexstrukturen 35 36 38 41 44 55 Ablaufbeispiel(3) § BeimAufteilenderSeitenwurdendiesehiergleichmäßigaufdie neuenSeitenunterderWurzelaufgeteilt § ImAllgemeinenhättemanauchandersaufteilenkönnen • z.B.nacheinembestimmenFüllgrad(z.B.80%) • odermanhätteauchallealtenEinträgeinderlinkenSeite belassenkönnen. Wurzel 10 6 12 Sortierte Seiten, noch nicht im B+-Baum 3 4 6 Informationssysteme2017 9 10 11 12 13 20 22 23 31 Kapitel11:Indexstrukturen 35 36 38 41 44 56 Ablaufbeispiel(4) § Index-EinträgefürdieBlätterwerdenimmerindenamweitesten rechtsstehendenIndex-KnotendirektüberderBlatt-Ebene eingefügt. § Solltedieservollsein,somussaufgeteiltwerden. Wurzel 10 6 20 12 23 35 Sortierte Seiten, noch nicht im B+-Baum 3 4 6 Informationssysteme2017 9 10 11 12 13 20 22 23 31 Kapitel11:Indexstrukturen 35 36 38 41 44 57 Ablaufbeispiel(5) Wurzel 20 10 6 3 4 12 6 Informationssysteme2017 9 Sortierte Seiten, noch nicht im B+-Baum 35 10 11 23 12 13 20 22 38 23 31 Kapitel11:Indexstrukturen 35 36 38 41 44 58 Hashverfahren § Gegeben:DomänederSchlüssel𝑆𝑆 = {0, … 𝑀𝑀 − 1} § 𝑀𝑀 kannsehrgroßsein § AnfragenderForm:welcheDatensätzehabendenSchlüsselx? § SogenanntePunktanfragen Grundidee § AbbildungaufAdressbereich𝐴𝐴, |𝐴𝐴| << |𝑆𝑆| § ℎ ∶ 𝑆𝑆 → 𝐴𝐴ordnetjedemSchlüsseleinenWertin𝐴𝐴 zu § GewünschteEigenschaften: • VerteileSchlüsselgleichmäßigüberAdressbereich • VermeideKollisionen • Kollision:verschiedeneWertein𝑆𝑆 werdenaufdengleichen Wertin𝐴𝐴 abgebildet § EinheitenimAdressbereichwerdenauchEimer(Englisch:Buckets) genannt. Informationssysteme2017 Kapitel11:Indexstrukturen 59 Hashverfahren(2) § Mannimmtan,dassdieZahlderbenutztenSchlüssel𝐾𝐾 vielkleiner istalsdieDomäne𝑆𝑆.Abbildungℎ mussalsonurdiebenutzten Schlüsselin𝐾𝐾 ordentlichabbilden. § GefahrvonKollisionen § Möglichkeiten,dieHashfunktionzuwählen • ℎ(𝑘𝑘) = 𝑘𝑘𝑚𝑚𝑚𝑚𝑚𝑚𝑞𝑞,𝑞𝑞 bestimmtGrößedesAdressbereichs • ℎ(𝑘𝑘) = 𝑘𝑘 B oderℎ(𝑘𝑘) = 𝑐𝑐 ∗ 𝑘𝑘,dannAuswahlgewisser Bitpositionen,umgültigenAdressbereichzuerhalten. § FortgeschritteneHashmethoden(è DBSVLimWinter) • DieseVerfahrensindsogenanntestatischeVerfahren • EsgibtaberauchdynamischeVerfahren,diedieHashfunktion andenBedarfanpassen(ErweiterbaresHashing). Informationssysteme2017 Kapitel11:Indexstrukturen 60 StatischerHashIndex:Beispiel Bucket directory key h Hash function 123456 Melanie 701Broad Eric 890890,…, 993889 336699 Merrie 555555,…, 678900 456789 Tom 197Cardiff Houston TX 123456, …, 246800 555555 Lee 221Post Houston TX 336699,…, 456789 678900 Jane 890890 Linda 123Speed Tucson AZ 246800 … 701Broad Tucson Tucson AZ Block 1 (Bucket) AZ Block 2 Block 3 197Cardiff . . . 234Oak Houston TX Houston TX Block n 993889 Informationssysteme2017 Davvid 564Alberca Kapitel11:Indexstrukturen Tucson AZ 61 StatischerHashIndex § Suche(Lookup) • EinZugriffaufaufdasVerzeichnis(directory) • EinZugriffaufdieeigentlicheDatei § PerformancehängtvonWahlderHash-Funktionab § ÜberlaufvonBuckets • Zuvieleverschiedene bucket0 Schlüssel-Wertewerdenauf gleichenBucket abgebildet bucket1 overflow • Lösung:Überlaufbehandlung bucket2 mittelsVerkettungvon Überlauf-Buckets overflow bucket3 Informationssysteme2017 Kapitel11:Indexstrukturen 62 IndexeinPostgres:B+Baum CREATETABLEMeineTabelle ( IDint, major int, minorint, name varchar ); § B+BaummitSchlüsselID CREATEINDEXMeineTable_i1ONMeineTabelle ID; § B+BaummitSchlüssel(major,minor) CREATEINDEXMeineTable_i2ONMeineTabelle (major,minor); Informationssysteme2017 Kapitel11:Indexstrukturen 63 IndexeübermehrereSpalten § SogenannteComposite-KeyIndexe. • AngabeeinerReihe(Achtung!Reihenfolgeistwichtig!)von Spalten. CREATEINDEXindexName ONMeineTabelle (att1,att2,att3); § TupelwerdendannimIndexsortiertanhanddieserAttribute • "LexikographischeOrdnung":att1istprimäresKriterium,gefolgt vonatt2,etc. • OptionalmitOrdnungASCoderDESCdereinzelnenAttribute. DefaultistASC. CREATEINDEXindexName ONMeineTabelle (att1DESC,att2,att3); Informationssysteme2017 Kapitel11:Indexstrukturen 64 IndexeinPostgres:Hash CREATEINDEXname ONtable USINGhash (column); § EinHash-IndexmachtSinn,falls: • KeineBereichsanfragenbenötigtwerden • Orderby (Schlüssel)nichtbenötigtwird • KeineodernurkleineJoins überdenSchlüsselnnotwendigsind Informationssysteme2017 Kapitel11:Indexstrukturen 65 Beispiel - Datenbank customer reserves film § customer (customerID,name,street,city,state) § film(filmID,title,kind,rentalPrice) § reserved (customerID,filmID,resDate) Informationssysteme2017 Kapitel11:Indexstrukturen 66 VerschiedeneSelektionen § Primärschlüssel,Punktanfrage 𝜎𝜎F,GHIJKB (𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓) § Punktanfrage 𝜎𝜎O,OGPKQRPSH,TUOVS Q (𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓) § Bereichsanfrage 𝜎𝜎WXSPTOUGYS,ZPX[ (𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓) § Konjunktion(d.h.logischesund) 𝜎𝜎\,T]KQ^ Q∧SPTOUGYS,ZPK[ (𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓) § Disjunktion(d.h.logischesoder) 𝜎𝜎SPTOUGYS,ZPXB∨\,T]KQJQ (𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓) Ziel ErsetzedieBlätterdesAnfrageplansdurchspezifischeZugriffsMethoden,d.h.kann/sollicheinenIndexbenutzenoderbessereinen sequenziellenScanderDatei? Informationssysteme2017 Kapitel11:Indexstrukturen 67 StrategienfürkonjunktiveAnfragen SELECT* FROMcustomer WHEREname ='Jensen'ANDstreet ='Elm' ANDstate ='Arizona' § § § § § KönnendieIndexeauf(name)und(street)benutztwerden? KannderIndexauf(name,street,state)benutztwerden? KannderIndexauf(name,street)benutztwerden? KannderIndexauf(name,street,city)benutztwerden? KannderIndexauf(city,name,street)benutzt? Informationssysteme2017 Kapitel11:Indexstrukturen 68 StrategienfürkonjunktiveAnfragen SELECT* FROMcustomer WHEREname ='Jensen'ANDstreet ='Elm' ANDstate ='Arizona' § § § § § KönnendieIndexeauf(name)und(street)benutztwerden?Ja KannderIndexauf(name,street,state)benutztwerden?Ja KannderIndexauf(name,street)benutztwerden?Ja KannderIndexauf(name,street,city)benutztwerden?Ja KannderIndexauf(city,name,street)benutzt?Nein Informationssysteme2017 Kapitel11:Indexstrukturen 69 MehrdimensionaleIndexstrukturen § Bislang:EindimensionaleSchlüssel. § InvielenAnwendungenistdieAnzahlderDimensionenhöher,was tun? § R-Baum • RstehtfürRechteck/Rectangle • KnotendefinierenminimaleRechtecke,diedieenhaltenen Rechteckeumschließen • Balanciert.Aufbau(Algorithmus)ähnlichzumB+Baum • ÜberlappungderMBRs(=MinimumBounding Rectangles) • ÜberlappungführtzuIneffizienzwährendderAnfrage. Informationssysteme2017 Kapitel11:Indexstrukturen 70 R-Baum- Beispiel A D K E J F B I D H G Informationssysteme2017 B A L C E C F J G Kapitel11:Indexstrukturen H K L I 71 NachteilevonIndexen § Platzverbrauch § Jedesinsert/delete/updatemussindenIndexennachgepflegt werden § JedeÄnderungsoperationkostetetwas:CPUund/oderI/O § MengederÄnderungsoperationkannsovielkosten,dassdiese KostendenNutzendesIndexüberwiegen Grundregel:jemehrLeseoperationendestomehrlohnensichIndexe. GenauereRegelnzum"Index Tuning",Anwendbarkeitundweitere DetailszurphysischenOrganisationvonTupeln bzw.Referenzenauf TupelinIndexenwerdeninderVLDatenbanksystemevorgestellt. Informationssysteme2017 Kapitel11:Indexstrukturen 72