Osnova predn asky Hierarchick e indexy, B / B+ stromy, tries V yklad pokrocil e technologick e b aze pouzvan e pro indexov an z aznam u v souboru Grafy, stromov a grafov a struktura, vyhled avac strom PV 062 Organizace soubor u Jan Staudek http://www..muni.cz/usr/staudek/vyuka/ Ð Û Å«Æ ±²³ µ ¹º»¼½¾ Ý Verze : jaro 2018 B stromy B+ stromy tries B azov a technologie indexov an z aznam u soubor u na vnejs pameti line arn indexy, tj. tabulky, resp. hierarchie tabulek, neb yv a vzdy efektivn. Cl { bez ohledu na rozsah souboru vyresit dotaz nekolika m alo operacemi bez aplikace hasov an Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 1 Indexy na b azi vyhled avacch strom u Indexy na b azi vyhled avacch strom u Indexov an { mechanismus pro resen odpov edi na dotaz zjist'ujc hodnotu z aznamu, jehoz klc vyhovuje zadan e podmnce mechanismus { sekund arn soubor ve sch ematu organizace souboru { line arn index { tabulka { hierarchick y index indexsekvencn organizace { index na b azi vyhled avacho stromu indexy na b azi vyhled avacch strom u jsou alternativn organizac v uci index-sekvencn organizaci soubor u, ob e organizace zefektiv nuj resen dotazu nad souborem ob e organizace podporuj resen dotazu pro prpad jedin eho dotazovacho klce udrzov anm sekund arnho souboru { indexu ALE... line arn index je pro vn ejs pam eti nefektivn b yv a statick y, b yv a rozs ahl y hierarchick y index indexsekvencn organizace je v podstat e rovn ez statick y Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 2 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 3
Probl em doby prohled av an rozs ahl ych index u Negativa rozs ahl e / statick e indexov e struktury lze resit vce urov nov ymi indexy, snizuje se pocet potrebn ych diskov ych prstup u { 3x pro index (4. urove n je v RAM), 1x pro data { sekund arn data zabraj 10 % pameti, vynikajc zisk statick y index velmi neefektivn pro dynamick e soubory, reorganizace indexu jsou casove n arocn e, behem reorganizace nejsou data dostupn a reorganizace se mus delat,,mimo pracovn dobu" { nevhodn e pro provoz 24x7 (rezervace letenek, bankomaty) co delat, kdyz index je prlis rozs ahl y? Kdyz se do indexu vloz nejmens klc ze vsech klc u a indexov e bloky jsou pln e, predel av a se uspor ad an 888 000 indexov ych blok u { neprijateln a cena nelze jej umstit do RAM disk je pomal y na sekvencn prohled av an line arnho indexu resenm je napr. vce urov novost indexu { velmi neefektivn pro dynamick e soubory Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 4 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 5 Proc nestac index-sekvencn organizace? Grafy, pripomenut z akladnch pojm u z akladn nedostatky index-sekvencn organizace souboru jej vyhled avac v ykon kles a s (velk ym) r ustem souboru, { vytv ar se mnoho pretokov ych blok u { mus se periodicky prov adet rezijne n akladn a reorganizace souboru kles a jej efektivita vyuzv an pridelen e pameti pri rusen z aznam u souboru { mus se periodicky prov adet rezijne n akladn a reorganizace souboru Graf G = (V, E) V { konecn a nepr azdn a mnozina uzl u a E { mnozina hrana propojujcch uzly z V hrana, orientovan a hrana, orientovan y graf (digraph) dvojice (v, w), kde v a w jsou prvky V reprezentace vztahu (relace) mezi dvojic objekt u (uzl u) orientovan a hrana { uspor adan a dvojice uzl u (v, w) orientovan y graf { graf s orientovan ymi hranami neorientovan y graf zvl astn prpad orientovan eho grafu ke kazd e orientovan e hrane (v, w) existuje i hrana (w, v) { tak e tzv. oboustranne orientovan a hrana { (v, w) a (w, v) je t az (neorientovan a) hrana, { porad uzl u propojen ych neorientovanou hranou je irelevantn Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 6 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 7
Grafy, pripomenut z akladnch pojm u Grafy, pripomenut z akladnch pojm u sousedn uzly v je sousedn s w, kdyz v grafu existuje hrana (v, w) Stupe n uzlu (degree) pocet hran, kter e s uzlem inciduj U orientovan ych graf u lze rozlisovat vstupn stupe n (indegree) a v ystupn stupe n (outdegree). Vstupn stupe n = pocet hran, kter e jsou orientov any smerem do uzlu, V ystupn stupe n = pocet hran, kter e jsou orientov any smerem z uzlu. arita, v ystupn stupe n pocet vystupujcch hran z uzlu bin arn graf (2 vystupujc hrany),..., m- arn (m vystupujcch hran) paraleln hrany hrany zacnajc a koncc ve shodn ych uzlech cesta posloupnost uzl u, mezi kter ymi vede posloupnost hran d elka cesty = pocet hran, kter e cesta obsahuje, tj. pocet uzl u takov e posloupnosti { 1 cyklus cesta, kter a zacn a a konc ve stejn em uzlu smycka cyklus tvoren y jedinou hranou, kter a zacn a a konc v tomt ez uzlu Smycka zvysuje stupe n uzlu o dve jednoduch a cesta z adn y z uzl u na ceste se neopakuje Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 8 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 9 Grafy, pripomenut z akladnch pojm u Grafy, pripomenut z akladnch pojm u Ohodnocen y graf hrana { reprezentace vztahu mezi uzly v aha, ohodnocen hrany { kvantitavn ohodnocen vztahu Souvisl y graf graf, v nemz plat, ze pro kazd e jeho dva vrcholy x, y existuje alespo n jedna cesta z x do y Acyklick y graf strom neorientovan y souvisl y acyklick y graf, stromem se naz yvaj souvisl e grafy, kter e neobsahuj cykly odebr anm jedn e hrany ve stromu je porusena souvislost prid anm jedn e hrany vznikne cyklus Strom je minim aln souvisl y graf na dan ych vrcholech. Pro stromy plat, ze pocet hran je o jedna mens nez poctu uzl u. z adn a cesta v acyklick em grafu nen cyklem Jednoduch y graf orientovan y acyklick y graf, DAG, Directed Acyclic Graph graf neobsahujc cykly, smycky a n asobn e (paraleln) hrany Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 10 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 11
Grafy, pripomenut z akladnch pojm u Grafy, pripomenut z akladnch pojm u korenov y strom Korenov y strom je orientovan y strom, jehoz uzly maj vstupn stupe n roven jedn e az na jeden uzel, kter y ho m a roven nule. Tento speci aln uzel se naz yv a koren (root). korenov y strom je hierarchick a neline arn struktura pokud nerekneme jinak, ch apeme pod pojmem strom pojem korenov y strom uzly na kazd e ceste jsou razeny do vztah u typu rodic-potomek { z rodice vede hrana (cesta) k potomkovi kazd y potomek m a pr ave jednoho rodice ex. jeden v yznacn y vrchol { koren, o kter em plat, ze je jedin ym uzlem v grafu bez rodice (ve stromu se nach az pr ave jeden koren) uzel stromu bez potomka je listem, resp. vnejsm nebo tak e koncov ym uzlem uzel stromu, kter y m a alespo n 1 potomka a nen korenem, je vnitrnm uzlem cesta z korene do listu se naz yv a vetev stromu podgraf H = (V H, E H ) grafu G = (V G, E G ) V H je podmnozinou V G a E H je podmnozinou E G kostra grafu G podgraf H grafu G, kter y je strom a plat V H = V G podstrom c ast stromu tvoren a jednm uzlem (korenem podstromu) a vsemi jeho potomky m uze b yt ch ap an jako kompletn strom s am o sobe kazd y uzel ve stromu m uze tvorit koren podstromu Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 12 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 13 Strom Charakteristiky strom u hloubka uzlu ve stromu: hu = 0, 1,... d elka cesty vedouc od korene stromu k uzlu hloubka korene = 0 hloubka prm eho potomka korene = 1,... urove n ve stromu mnozina uzl u stromu se stejnou hloubkou uzlu hu koren je na urovni 0 kazd a urove n d obsahuje nejv yse k d uzl u, kde k je arita stromu { v bin arnm stromu m a kazd a urove n obsahuje nejv yse 2 d uzl u Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 14 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 15
Charakteristiky strom u hloubka stromu: K = 1, 2,..., n pocet urovn stromu hloubka nejvzd alenejsho listu od korene + 1 Srka stromu na jist e urovni pocet uzl u na stejn e urovni V yska stromu: h = K 1 Charakteristiky strom u maxim aln hloubka uzlu ve stromu v yska stromu pouze s korenem je 0 Strom m a nejmens moznou v ysku pr ave tehdy, kdyz na vsech urovnch krome posledn m a pln y (maxim alne mozn y) pocet uzl u Pri sestavov an strom je mnohdy d ulezit e sestavovat stromy s nejmens moznou v yskou, protoze tm se zajist minim aln d elky cest k uzl um (zvl aste k list um) Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 16 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 17 Charakteristiky strom u Bin arn strom Vyv azen y strom vyvazov an { rovnomern e rozkl ad an uzl u v urovnch cl vyv azen: { v kazd e urovni krome posledn, m a maxim alne mozn y pocet uzl u, ({ a v posledn urovni m a uzly co nejvce vlevo) m a nejmens moznou v ysku pri dan e arite a dan em poctu uzl u Uspor adan y strom strom, ve kter em jsou vsichni prm potomci kazd eho uzlu serazeni pokud uzel m a n prm ych potomk u, lze urcit prvnho prm eho potomka, druh eho prm eho potomka, az n-t eho prm eho potomka Neuspor adan y strom strom v ciste struktur alnm smyslu pro dan y uzel nejsou jeho prm potomci uspor adan konecn a mnozina uzl u, kter a je bud'to pr azdn a nebo obsahuje koren a dva disjunktn bin arn (pod)stromy { lev y podstrom a prav y podstrom pocet uzl u n upln eho bin arnho stromu o K urovnch (v ysce h) h K 1 n = 2 i = 2 i i=0 opacn a uloha { pocet urovn K bin arnho stromu o n uzlech je-li vyv azen y pak K min = log 2 (n + 1), d ale plat K max = n K min n 1 1 2 2, 3 3 4, 5, 6, 7 4 8, 9, 10, 11, 12, 13, 14, 15 i=0 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 18 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 19
Binarn stromy Binarn strom Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 20 Jan Staudek, FI MU Brno Binarn strom PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 21 Binarn stromy, p r klady aplikac 2 stromy vyraz u X data (operandy, operatory) obsahuj jak vnit rn uzly tak i vn ej s uzly i ko ren Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 22 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 23
Bin arn stromy, prklady aplikac Bin arn stromy, prklady aplikac strom Humanova k odov an data (k odov a slova) reprezentuj pouze vnejs uzly hrany jsou systematicky ohodnoceny 0 a 1 bin arn k od kazd eho listu je d an retezem ohodnocen hran na ceste z korenu do dan eho listu bin arn vyhled avac strom, BVS, v roli indexu typicky se jedn a se o redundantn BVS { nekter e klce se vyskytuj jak ve vnitrnm uzlu tak i v listu koren a vnitrn uzly hraj roli navig ator u k list um { z aznam um data (ukazatele na data) obsahuj pouze vnejs uzly, listy v korenu a ve vnitrnch uzlech je obsazen y klc, + prpadne nejak a dals data Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 24 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 25 Bin arn stromy, prklady aplikac (pokrac.) Bin arn vyhled avac strom, BVS uzly jsou uspor ad any tak, aby bylo mozn e rychle vyhled avat danou hodnotu reprezentovanou uzlem { klc Kazd emu uzlu je prirazen urcit y klc Podle hodnot techto klc u jsou uzly uspor ad any Lev y podstrom uzlu obsahuje pouze klce mens nez je klc tohoto uzlu Prav y podstrom uzlu obsahuje pouze klce vets nez je klc tohoto uzlu Napr. implementace slovnku pomoc redundantnho BVS (ukazatele na) hesla, pojmy (z aznamy) jsou ulozeny ve vnejsch uzlech BVS pln funkci indexu slovnku, klce jsou v BVS uspor adan e: { klce v lev em podstromu jsou klc v korenu podstromu a { klc v korenu podstromu je mens nez klce v prav em podstromu uveden y prklad indexu slovnku m a 4 urovne, v ysku 3, 3 vnitrn uzly a koren a 5 vnejsch uzl u jedn a se o prklad,,redundantnho"bvs, tzv. hranicn klce jsou uvedeny jak v korenu a ve vnitrnch uzlech, tak i ve vnejsch uzlech Vyhled av an v BVS Zacn a zpravidla v koreni V kazd em kroku se porovn a hledan a hodnota { klc s klcem zkouman eho uzlu Pokud jsou si rovny, hodnota byla nalezena Je-li hledan a hodnota mens, pokracuje hled an v lev em podstromu Je-li hledan a hodnota vets, pokracuje hled an v prav em podstromu Kdyz vyhled avac algoritmus naraz na neexistujc uzel (dotycn y podstrom je pr azdn y) strom hledanou hodnotu neobsahuje Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 26 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 27
Probl em vyv azen BVS Dobr e heuristiky pro vyhled avac stromy { obecn e uvazme neredundatn BVS nejhors doba vyhled av an v upln em v yskove vyv azen em stromu s n uzly odpovd a poctu urovn, tj. log 2 (n + 1) casto zprstup novan e klce v neredundantnm stromu by m ely b yt umsteny blzko ke korenu pro kazd y uzel plat, ze jeho lev y a prav y podstrom obsahuje t emer stejn y pocet uzl u Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 28 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 29 N ahrada statick e indexov e struktury dynamickou strukturou Pozadovan e vlastnosti indexu na disku pozadovan e vlastnosti dynamick e indexov e struktury mus umoznit data vkl adat / rusit pri minim aln n arocnosti reorganizace mus b yt implementovateln e na disku vhodn y tip resen { vyv azen e vyhled avac stromov e struktury BVS, bin arn vyhled avac strom (je nevhodn y pro malou aritu) m- arn vyhled avac strom Kruci aln probl em jak zajistit dynamicky udrzovatelnou vyv azenost pri minim alnch ztr at ach reorganizacemi stromu? bin arn hled an nen pro disky optim aln vyhled avac strategie 3 az 4 vystaven disku pri hled an v indexu je na mezi prijatelnosti bin arn hled an na 4 kroky lze hledat mezi 16 polozkami bin arne prohlzen y index s 10 3 polozkami vyzaduje az 10 vystaven Vkl ad an a rusen klc u mus b yt stejne rychl e jako hled an klasick a udrzba index u v RAM je pro vnejs pameti neakceptovateln a, po vlozen/rusen se v indexu sm vyvolat pouze lok aln zmeny v minim alne mozn em okol modikovan e polozky, reorganizaci cel eho indexu akceptovateln y pr umer je modikace cca do 5 ukazatel u Poznámka: optim aln indexov an lze pochopiteln e resit rovn ez hasov anm viz predn aska o hasov an Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 30 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 31
Indexy na b azi (vyhled avacch) B strom u Indexy na b azi (vyhled avacch) B strom u Prednost organizac soubor u s indexem na b azi B stromu B-strom je vyv azen a stromov a struktura, vetve maj shodnou d elku sekund arn soubor s indexem se pri vkl ad an a rusen z aznam u reorganizuje pomoc mal ych lok alnch zmen v grafov e strukture, pro udrzen v ykonu nen potreba reorganizovat prim arn soubor { soubor prim arnch dat nen potreba uspor ad avat Prednosti index u budovan ych na b azi B strom u prevazuj nad jejich nedostatky vyss prostorov a rezie { ale index se pamatuje na vnejs pameti dodatecn a casov a rezie zp usobovan a stepenm a svl ev anm uzl u grafu Siroce se pouzvaj v mnoha aplikacch B strom je standardn metoda organizace index u v b azch dat Existuje vce verz B strom u, v praxi jsou pro velk e soubory nejrozsrenejs B + stromy Adres are syst emu NTFS jsou budovan e na b azi B + stromu Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 32 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 33 Dynamick e vce urov nov e indexy na b azi m- arnch strom u m- arn vyhled avac strom, ilustrace struktury uzlu presneji { na b azi m- arnch vyhled avacch strom u, resp. vyhled avacch strom u s vetvenm r adu m, kde m > 2 V prirozen e interpretaci rozsren pojmu BVS ve vnitrnm uzlu m a vce nez 1 klc v kazd em uzlu jsou klce uspor adan e pro kazd y sousedn p ar klc u existuje podstrom obsahujc klce s hodnotami lezcmi mezi hodnotami tohoto p aru existuje podstrom uzlu obsahujc klce mens nez nejmens klc v uzlu existuje podstrom uzlu obsahujc klce vets nez nejvets klc v uzlu Proc m- arn vyhled avac strom? zvetsov anm arity pri zachov an poctu uzl u a vlastnosti vyv azenosti se dosahuje snizov an v ysky stromu d usledkem je urychlen vyhled av an dky snizov an potrebn eho poctu vyhled avacch krok u { diskov ych operac pri pr uchodu vetv stromu tudz efektivn technika pro implementaci indexu souboru Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 34 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 35
Dynamick e vce urov nov e indexy na b azi m- arnch strom u m- arn vyhled avac strom, probl em nevyv azenosti uzel m- arnho vyhled avacho stromu obsahuje strukturu < p 0, K 1, p 1, K 2,..., p n 1, K n, p n >, resp. < p 0, K 1, r 1, p 1, K 2, r 2..., p n 1, K n, r n, p n >, kde Vlozenm klc u 1, 2, 3,..., 14,15 do 4- arnho vyhled avacho stromu vznikne struktura uveden a vlevo na obr azku degenerovan y, nevyv azen y strom, slozitost hled an O(n) K 1 < K 2 <... < K n jsou vyhled avac klce p 0, p 2,..., p n jsou ukazatel e potomkov ych uzl u (vyhled avacch podstrom u) nebo pr azdn e ukazatele Je-li K vyhled avac klc v podstromu odkazovan em p i pak plat: je -li p i = p 0,pak K < K 1 je -li p i = p n,pak K > K n je -li p i = p 1,..., p n 1,pak K i < K K i+1 [r 1, r 2,..., r n jsou data nebo ukazatele na data souvisejc s klci K i ] pocet v ystupnch hran uzlu je m, tudz pocet vyhled avacch klc u v uzlu je n m 1 vhodnejsm v ysledkem by byl strom uveden y vpravo { vyv azen y 4- arn vyhled avac strom vyhled an probehne nejh ure ve 2 krocch, slozitost hled an O(log 4 n) jak udrzet m- arn vyhled avac strom vyv azen y? { pomoc technologie B-strom u Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 36 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 37 B-strom B-strom nen ani Bin arn strom, ani Balanced tree!!! B-strom { Bayer & McCreight tree, 1972, Bayer uv strom B-strom r adu m je m- arn vyhled avac strom s vlastnostmi je to korenov y strom s jist ym poctem vnitrnch uzl u a vnejsch, koncov ych uzl u, list u Kazd y uzel obsahuje alespo n jeden klc, kter y jednoznacne identikuje z aznam v souboru a vnitrn uzel alespo n dva ukazatele na potomkov e uzly nebo listy. Pocet klc u a ukazatel u obsazen ych v uzlu se m uze menit ve stanoven ych mezch. Pro kazd y uzel plat stejn e omezen maxima poctu klc u v uzlu...... B-strom Klce jsou v uzlu uspor adan e v neklesajcm porad. S kazd ym klcem je asociov an potomek, kter y je korenem podstromu, kter y obsahuje vsechny uzly s klci mensmi nebo rovn ymi tomuto klci a pritom vetsmi nez predch azejc klc. Uzel m a nejpravejsho potomka, kter y je korenem podstromu obsahujcho uzly s klci, kter e jsou vets nez kter ykoliv klc v uzlu. Uzel obsahuje pocet ukazatel u, kter y je o jedna vets nez pocet pocet klc u v uzlu Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 38 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 39
B-strom B-strom B-strom r adu m je m- arn vyhled avac strom s omezenmi kazd y uzel m a nejv yse m potomk u (obv. 2d potomk u a 2d 1 klc u) kazd y uzel az na koren a listy m a alespo n m/2 potomk u (resp. d potomk u a d 1 klc u) koren obsahuje alespo n 1 klc a m a alespo n dva potomky, pokud nen listem uzel s g m potomky obsahuje g 1 vyhled avacch klc u vsechny listy jsou na stejn e urovni Vetsina vce- urov nov ych index u pouzv a B (resp. B + ) stromy pro vkl ad an / odstra nov an klc u ponech avaj v kazd em uzlu voln y prostor (uzly jsou z poloviny az plne pln e) Uzel B (resp. B + ) stromu se uchov av a v jednom bloku vnejs pameti, m typicky b yv a velk e (stovky), strom pak m a malou v ysku. 3- arn B-strom (r adu 3) po vlozen z aznam u s klci 8, 5, 1, 7, 3, 12, 9, 6 B-strom je,,neredundantn"strom Klce se v cel e grafov e strukture vyskytnou pr ave jednou Z aznamy jsou umsteny v uzlech s klci nebo jsou z nich adresovan e Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 40 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 41 B-strom, stepen / sl ev an uzl u B-strom, vkl ad an klce (INSERT z aznamu do souboru) Vkl ad an klce do nepln eho uzlu nem en strukturu stromu Vkl ad an klce do pln eho uzlu men strukturu stromu, zp usob stepen prepl novan eho uzlu na dva uzly St epen se m uze rozsrit na vce urovn Rusen klce v uzlu, kter e nesnz pocet klc u v uzlu pod jednu polovinu, nem en strukturu stromu Rusen klce v uzlu, kter e snz pocet klc u v uzlu pod jednu polovinu, zp usob sl ev an sousednch uzl u, m en strukturu stromu Sl ev an se m uze rozsrit na vce urovn B-strom se zacn a tvorit jako jednouzlov y strom (koren) Pokud koren obsahuje m en e nez maximum klc u, klc se vloz do korene a klce v tomto uzlu se uspor adaj pri vkl ad an m-t eho klce do korene se koren step na dva uzly { potomky, v korenu se ponech a stredn klc a ostatn se umst p ul na p ul do potomk u pri vkl ad an m-t eho klce do nekorenov eho uzlu se tento uzel step na dva uzly na stejn e urovni a stredn klc s ukazateli na rozstepen e uzly se presouv a do jejich rodicovsk eho uzlu stepen se rozsiruje az do korenu, kter y se pri pokusu o jeho preplnen rovnez step (viz v yse) a zvysuje se tm v yska stromu Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 42 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 43
B-strom, rusen klce (DELETE z aznamu v souboru B-strom, ilustrace konstrukce vkl ad anm pokud pri rusen z aznamu klesne pocet klc u v uzlu pod m/2, sousedn uzly se sl evaj vc. odpovdajc redukce rodice B-strom r adu 3 po vlozen z aznam u s klci 8, 5, 1, 7, 3, 12, 9, 6 sl ev an se rozsiruje az do korenu a potenci alne se tm snizuje v yska stromu Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 44 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 45 B-strom, ilustrace konstrukce vkl ad anm B-strom, ilustrace konstrukce vkl ad anm B-strom r adu 3 po vlozen z aznam u s klci 8, 5, 1, 7, 3, 12, 9, 6 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 46 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 47
B-strom, ilustrace konstrukce vkl ad anm B strom, odvozen r adu stromu Necht' plat D elka klce, K = 9 B, d elka bloku vnejs pameti B = 512 B d elka ukazatele bloku vnejs pameti s daty, P d = 7 B d elka ukazatele bloku vnejs pameti s uzlem stromu, P = 6 B Uzel bude obsahovat az m ukazatel u na potomky, m 1 ukazatel u na data a m 1 klc u Odvozen m: m P + ((m 1) (P d + K)) B m 6 + ((m 1) (7 + 9)) 512, tj. m = 23 budou-li uzly pln e z 69 %, budou obsahovat 23 0,69=16 ukazatel u (15 klc u), tj. na 0.,1.,2. a 3. urovni je 1 (15), 16 (240), 256 (3 840), 4096 (61 440) uzl u (klc u/dat), tj. indexacn kapacita tohoto 4 urov nov eho B-strom je 65 535 polozek Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 48 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 49 B+ strom, charakteristiky B+ strom, charakteristiky redundantn varianta B-stromu vyv azen y vyhled avac strom, vsechny listy jsou na stejn e urovni nejsreji pouzvan y index vnitrn uzly r adu m mohou obsahovat az m 1 klc u r ad listu m l ud av a maxim aln pocet ukazatel u na z aznamy (z aznam u), je roven poctu klc u v listu B+ stromy podporuj jak prm y tak i sekvencn prstup z aznamy s daty jsou adresovan e pouze z list u listy jsou retezen e v porad podle klc u do seznamu vnitrn uzly B+ stromu hraj roli indexu k list um vsechny uzly jsou alespo n z poloviny pln e ve vnitrnch uzlech se t.zv. hranicn klce mohou opakovat, klce v lev em podstromu K i je K i Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 50 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 51
B+ strom, charakteristiky B+ strom, charakteristiky Vnitrn uzly r adu m Az na koren obsahuj alespo n m/2 ukazatel u Nejv yse obsahuj m ukazatel u Jsou-li P 1, P 2,..., P j ukazatele odpovdajc klc um K 1 < K 2 < K 3... < K j 1, kde m/2 j m pak plat: Listov y uzel r adu m l obahuje ukazatel na prst listov y uzel obsahuje alespo n m l /2 ukazatel u na z aznamy a hodnot klc u obsahuje nejv yse m l ukazatel u na z aznamy a hodnot klc u { P 1 ukazuje na podstrom s klcov ymi hodnotami x K 1 { P i (1 < i < j) ukazuje na podstrom s klcov ymi hodnotami x, pro kter e plat K i 1 < x K i { P i ukazuje na podstrom s klci x > K j 1 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 52 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 53 B+ strom, prklad, m = 3 B+ strom, t yz prklad, m = 5 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 54 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 55
B+ strom, alternativn denice, m = 3 B+ strom, pozn amky Nelistov e uzly vytv arej vce- urov nov y rdk y index list u Hranicn hodnotu klce v korenu (pod)stromu urcuje hodnota klce nejprav ejsho listu v jeho lev em podstromu Pon evadz meziuzlov a propojen jsou implementovan a ukazateli, logicky blzk e bloky nemus b yt fyzicky blzk e Pri zpracov av an dotazu se proch az cesta stromem od korenu k nekter emu listu Jestlize v souboru je n hodnot vyhled avacho klce, pak tato cesta nen dels nez log m/2 n uzel m a obvykle rozmer diskov eho bloku, napr. 4KB { m pak bude napr. 100 (40 B na jednu indexovou polozku) { a pokud je v souboru 1 mili on hodnot z aznam u (n), pak v yska stromu nepres ahne log 50 10 6 = 4, { tj. vyhled an z aznamu si vyz ad a az 4 diskov e operace, tj. pri 10 ms/diskovou operaci se vyhled an odehraje do 40 ms Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 56 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 57 B+ strom, vkl ad an B+ strom, m = 3, vlozen 8, 5, 1, 7, 3, 12, 9, 6 Nalezni odpovdajc listov y uzel L a vloz data do L Jestlize je v L prostor pro vlozen { HOTOVO Jestlize se L prepln { { L se rozstep na L a nov y uzel L2 v j = m l+1 2 { Entity v L se rozloz mezi L a L2, entity od j+1 do L2 { j-t y klc se kopruje do rodice L { do rodice L se vloz odkaz na L2 Tento postup se m uze rekurzivn e opakovat ve vnitrnch uzlech St epenm strom expanduje St epenm korene se zvysuje v yska stromu Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 58 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 59
B+ strom, rusen B strom, prednosti, nedostatky / B+ strom Nalezni odpovdajc listov y uzel L a zrus data v L Jestlize L z ust av a alespo n z 1/2 pln y { HOTOVO, pokud je odstra novan y klc ve vnitrnm uzlu, odstran se a nahrad se lev ym sousedem Jestlize L uz nen alespo n z 1/2 pln y { { { Zkus redistribuovat data do L z lev eho sourozence L { Pokud to nejde, zkus redistribuovat data do L z prav eho sourozence L { pokud to nejde, sluc L a oba sourozence L Pokud se slucovalo, mus se v rodici L odstranit odkaz na L nebo na jeho sourozence Prednost index u typu B-strom nekdy lze nal ezt vyhled avac klc drve nez v listu Nedostatky index u typu B-strom pouze mal a c ast vsech hodnot vyhled avacch klc u se najde "brzo\ uzly B-stromu jsou vets nez nelistov e uzly B+ stromu (o ukazatele dat) do uzlu B-stromu se vejde m ene klc u, strom bude vyss, pr uchod dels vkl ad an a rusen z aznam u je u B-stromu komplikovanejs nez u B+ stromu prednosti B-strom u obvykle nevyv az jejich nedostatky Slucov an se m uze rozsrit az ke korenu, pak se snizuje v yska stromu Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 60 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 61 N asobn a indexace pomoc B+ a B strom u Trie, radix tree, prex tree,... B+ strom se vytvor pro nejd ulezitejs klcovou hodnotu pro ostatn dotazy se vytvor B stromy B stromy specikuj (ukazatel u) umsten dat v listech B+ stromu E.Fredkin, 1960, information retrieval trie (vyslov,,try"jako,,sky") je m- arn strom datov a struktura stromov eho typu pouzvan a pro reprezentaci (uchov av an) retezc u nad danou abecedou Na rozdl od vyhled avacch strom u z adn y uzel trie neuchov av a klc souvisejc s dan ym uzlem naopak, pozice uzlu v trie ukazuje, kter y klc s uzlem souvis kazd y uzel trie obsahuje pole ukazatel u, kazd y jeden z nich odpovd a znaku (prvku) abecedy ve kter e jsou klce vyj adren e vsichni n aslednci uzlu trie maj spolecn y prex retezu souvisejcho s dan ym uzlem Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 62 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 63
Trie, radix tree, prex tree,... Trie, prklad Koren trie je asociov an s pr azdn ym retezem hodnoty (data) se bezne neasociuj s kazd ym uzlem trie, pouze s listy trie je strom, kde kazd y uzel reprezentuje jedno slovo nebo prex slova koren stromu reprezentuje pr azdn y retez uzly { prm n aslednci korene { reprezentuj prexy d elky 1 uzly vzd alen e 2 hrany od korene reprezentuj prexy d elky 2,... listov y uzel vzd alen y k hran od korene reprezentuje slovo d elky k Index slov aeroplane, bicycle, bike, bus, caravan, carriage, car, train trie nen m- arn vyhled avac strom razen klcov ych hodnot v uzlech nedodrzuje pravidla pro m- arn vyhled avac strom Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 64 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 65 Trie Trie jestlize je trie pouzit y jako index pak listy obsahuj adresy z aznam u s odpovdajcmi hodnotami klc u jestlize je trie pouzit y jako reprezent ator hodnot pak listy jsou indik atory existence z aznam u s platn ymi hodnotami klc u Oblast pouzit Rychl e prohled av an rozs ahl ych text u via preprocesing { vyhled av an vzor u, prex u porovn av anm,... Konstrukce adres ar u pro rychl e proch azen adres ar u kapes s hasovan ymi z aznamy pri extenzibilnm (rozsiriteln em) hasov an... klc v trie je uchov avan y v uzlech na ceste z korene k vnejsmu uzlu a nikoliv jako celek v jednom uzlu klce mus b yt deliteln e na vhodn e komponentn jednotky (symboly: znaky, cifry,... ) uzel m- arnho trie m-prvkov e pole kazd y prvek pole odpovd a jednomu,,r adu"klce prvek pole obsahuje ukazatel nebo indik ator pr azdn eho msta pozice prvku pole, obsahujc ukazatel, urcuje hodnotu r adu Jin y n azev { radix searching z aklad je odvozen y z abecedy pouzit e pro k odov an klce m je d ano z akladem pouzit ym pro vyj adren klce trie { 10, dekadick e cifry, { 26/27, znaky/vc. mezery {... Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 66 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 67
Co mohou b yt klce v tries? Vlastnosti trie retezce (slozen e ze znak u) prirozen a csla (slozen a z cslic) cel a csla (slozen a z cslic, +, -) zlomky (slozen e z cslic, +, -, /) re aln a csla (slozen a z cslic, +, -,.) slova poctace (slozen a z 0, 1) objekty (slozen e z objekt u) v yska trie je d ana d elkou nejdelsho klce v yhody d elka hled an v trie je umern a d elkce klce { nikoli logaritmu poctu uzl u ve stromu { ne uspesn e hled an m uze skoncit na kter ekoliv urovni pro prpad velk eho mnozstv kr atk ych klc u je prostorove efektivn, inici aln sekvence se sdl pocet vnitrnch uzl u je dan y d elkami klc u, neni nutn e strom vyvazovat pri vkl ad an jsou rychlejs nez hasovan e tabulky, nemus se prepracov avat indexy pri preplnen... Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 68 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 69 Komprimovan y trie Prklady Eliminuj se redundantn uzly, tj. uzly s jednm potomkem (prp. vyjma korene) Cesta p je redundantn, jestlize kazd y uzel n i na t eto ceste je redundantn Redundantn cesty se nahrad uzly obsahujcmi 1 / vce znak u c i z S Vyhled avac stromy obecn e B stromy B+ stromy Trie Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 70 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 71
Vyhled avac stromy obecn e Vyhled avac stromy obecn e Jak y je maxim aln pocet uzl u v m- arnm vyhled avacm stromu v ysky h? v jednotliv ych urovnch i jsou pocty uzl u = m i urovn je h + 1, obsahuj m 0, m 1, m 2, m 3,... m h uzl u soucet prvnch h + 1 clen u geometrick e posloupnosti je mh+1 1 m 1 pro m = 3, h = 2 je to 13 uzl u, po urovnch: 1 + 3 + 9 jak y je maxim aln pocet klc u v m- arnm vyhled avacm stromu v ysky h? kazd y uzel obsahuje az (m 1) klc u, takze maxim aln pocet klc u v m- arnm vyhled avacm stromu v ysky h je tedy n = mh+1 1 m 1 (m 1) = m h+1 1 pro m = 3, h = 2 je to 26 klc u, po urovnch: 2 + 6 + 18, pro m = 100, h = 3, 10 6 klc u minim aln v yska m- arnho vyhled avacm stromu s n klci je tudz h = O(log m (n + 1)) pocet diskov ych operac pri vyhled av an pomoc m- arnho vyhled avacm stromu je logaritmicky umern y poctu hodnot vyhled avacho klce Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 72 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 73 Vyhled avac stromy obecn e B-strom, prklad vkl ad an maxim aln pocet klc u v m- arnm vyhled avacm stromu v ysky h je n = m h+1 1 Jak vetvit m- arn strom pri zadan e d elce hled an a zadan em poctu klc u? zadan e d elce hled an ( v ysce h) a zadan emu poctu klc u { n odpovd a arita alespo n m = (n + 1) 1/h h = 4, n = 255, m = 4 h = 4, n = 64K, m = 16 h = 4, n = 1M, m = 32 h = 3, n = 1M, m = 100 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 74 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 75
B-strom, prklad vkl ad an Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 76 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 77 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 78 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 79
Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 80 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 81 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 82 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 83
Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 84 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 85 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 86 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 87
Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 88 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 89 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 90 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 91
Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 92 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 93 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 94 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 95
Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 96 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 97 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 98 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 99
Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 100 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 101 B+ strom,prklad 1 B+ strom,prklad 2 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 102 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 103
B+ strom,prklad 2 B+ strom,prklad 2 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 104 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 105 B+ strom,prklad 2 B+ strom,prklad 2 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 106 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 107
B+ strom,prklad 2 B+ strom, prklad Vypoct ete optim aln r ad B+ stromu v prostred klc m a d elku V = 9 B diskov y blok m a d elku B = 512 B ukazatel na z aznam s daty m a d elku R = 7 B ukazatel na indexov y z aznam d elku P = 6 B Vnitrn uzly B+ stromu jsou umst'ovan e po jednom v jednom diskov em bloku a kazd y obsahuje az m ukazatel u a az m 1 klc u, takze r ad vnitrnch uzl u bude m P + (m 1) V B 6m + 9(m 1) 512 m = 34 Podobne pro r ad list u plat m l (R + V ) + P B 16m l + 6 512 m l = 31 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 108 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 109 B+ strom, prklad Trie, prklad budou-li nelistov e uzly pln e z 69 %, budou obsahovat 34 0,69=23 ukazatel u, tj. 22 klc u mnozina hodnot klc u 293...,2960, 2966, 2967, 25..., 73..., budou-li listov e uzly pln e z 69 %, budou obsahovat 31 0,69=21 ukazatel u dat tj. na 0.,1.,2. a 3. urovni 1, 23, 529, 12 167 uzl u, tj. kapacita 4 urov nov eho indexu typu B + -strom pokryje 12 167 21 = 255 507 z aznam u vypoctenou aritu v re ale snz potreba uchov avat organizacn informace o uzlu (vnitrn/vnejs, okamzit y pocet klc u v uzlu,... ) Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 110 Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 111
Trie, prklad aplikace v rozsiriteln em hasov an implementace adres are pomoc trie a pomoc tabulky Jan Staudek, FI MU Brno PV062 Organizace souboru { Hierarchicke indexy, B+ / B stromy 112