XI. ERDÉLYI TUDOMÁNYOS DIÁKKÖRI KONFERENCIA

Hasonló dokumentumok
Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Algoritmusok és adatszerkezetek gyakorlat 07

17. A 2-3 fák és B-fák. 2-3 fák

8. Programozási tételek felsoroló típusokra

Philosophiae Doctores. A sorozatban megjelent kötetek listája a kötet végén található

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

The original laser distance meter. The original laser distance meter

Leica DISTOTMD510. X310 The original laser distance meter. The original laser distance meter

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Fuzzy rendszerek. A fuzzy halmaz és a fuzzy logika

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský

Békefi Zoltán. Közlekedési létesítmények élettartamra vonatkozó hatékonyság vizsgálati módszereinek fejlesztése. PhD Disszertáció

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html

Elosztott rendszerek játékelméleti elemzése: tervezés és öszönzés. Toka László

4 2 lapultsági együttható =

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

METROLÓGIA ÉS HIBASZÁMíTÁS

Statisztikai próbák. Ugyanazon problémára sokszor megvan mindkét eljárás.

Kvantum-tömörítés II.

Műszaki folyamatok közgazdasági elemzése. Kevert stratégiák és evolúciós játékok

Dr. Ratkó István. Matematikai módszerek orvosi alkalmazásai Magyar Tudomány Napja. Gábor Dénes Főiskola

Relációk. Vázlat. Példák direkt szorzatra

Vázlat. Relációk. Példák direkt szorzatra

10. Alakzatok és minták detektálása

Tanult nem paraméteres próbák, és hogy milyen probléma megoldására szolgálnak.

d(f(x), f(y)) q d(x, y), ahol 0 q < 1.

Véletlenszám generátorok. 6. előadás

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Példák ekvivalencia relációra (TÉTELként kell tudni ezeket zárthelyin, vizsgán):

10. előadás Speciális többágú fák

7 7, ,22 13,22 13, ,28

KOMBINATORIKA ELŐADÁS osztatlan matematika tanár hallgatók számára. Szita formula

A bankközi jutalék (MIF) elő- és utóélete a bankkártyapiacon. A bankközi jutalék létező és nem létező versenyhatásai a Visa és a Mastercard ügyek

Elemi adatszerkezetek

Adatszerkezetek 2. Dr. Iványi Péter

Optikai elmozdulás érzékelő illesztése STMF4 mikrovezérlőhöz és robot helyzetérzékelése. Szakdolgozat

Egy negyedrendű rekurzív sorozatcsaládról

2. személyes konzultáció. Széchenyi István Egyetem

Régió alapú szegmentálás. Digitális képelemzés alapvető algoritmusai. 2. példa: Elfogadható eredmények. 1. példa: Jó eredmények. Csetverikov Dmitrij

Véletlenszám generátorok. 5. előadás

MŰSZAKI TUDOMÁNYI DOKTORI ISKOLA. Napkollektorok üzemi jellemzőinek modellezése

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

Adatbáziskezelés. Indexek, normalizálás NZS 1

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek

1.Tartalomjegyzék 1. 1.Tartalomjegyzék

s n s x A m és az átlag Standard hiba A m becslése Információ tartalom Átlag Konfidencia intervallum Pont becslés Intervallum becslés

Hipotézis vizsgálatok. Egy példa. Hipotézisek. A megfigyelt változó eloszlása Kérdés: Hatásos a lázcsillapító gyógyszer?

Térinformatikai adatszerkezetek

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Support Vector Machines

Példa 30 14, 22 55,

Regresszió. Fő cél: jóslás Történhet:

VARIANCIAANALÍZIS (szóráselemzés, ANOVA)

KOVÁCS BÉLA, MATEMATIKA I.

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 28.

Adatszerkezetek 7a. Dr. IványiPéter

Rendezések. Összehasonlító rendezések

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Jövedelem és szubjektív jóllét: az elemzési módszer megválasztásának hatása a levonható következtetésekre

Periodikus figyelésű készletezési modell megoldása általános feltételek mellett

Adatsorok jellegadó értékei

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

V. Kétszemélyes játékok

Statisztikai. Statisztika Sportszervező BSc képzés (levelező tagozat) Témakörök. Statisztikai alapfogalmak. Statisztika fogalma. Statisztika fogalma

Struktúra nélküli adatszerkezetek

Az elektromos kölcsönhatás

Méréselmélet: 5. előadás,

Osztályozó algoritmusok vizsgálata

Egyszerű algoritmusok

OAF Gregorics Tibor: Minta dokumentáció a 4. házi feladathoz 1. Feladat. Megoldás

ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK

Ahol mindig Ön az első! Segítünk online ügyféllé válni Kisokos

RADPLAN. A Mentum Planet, Mentum Ellipse az InfoVista bejegyzett védjegye, minden jog fenntartva!

Schlüter -KERDI-BOARD. Közvetlenűl burkolható felületű építőlemez, többrétegű vízszigetelés

MEZŐGAZDASÁGI TERMÉKEK FELVÁSÁRLÁSI FOLYAMATÁNAK SZIMULÁCIÓJA, KÜLÖNÖS TEKINTETTEL A CUKORRÉPÁRA OTKA

Algoritmusok és adatszerkezetek I. 10. előadás

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Algoritmuselmélet 2. előadás

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Mechanizmus-tervezés: szociális jóléti függvény nem kooperatív (versengő) ágensek. A megegyezés keresése és elérése: Tárgyalás (Negotiation)

Mátrix-vektor feladatok Összeállította dr. Salánki József egyetemi adjunktus Begépelte Dr. Dudás László és Bálint Gusztáv

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

Rendezettminta-fa [2] [2]

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

32. A Knuth-Morris-Pratt algoritmus

Adatszerkezetek és algoritmusok

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Kapcsolja össze háztartási készülékét a jövővel. Quick Start Guide

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Párhuzamos algoritmusok

Adatmodellezés. 1. Fogalmi modell

Item-válasz-elmélet alapú adaptív tesztelés. Item Response Theory based adaptive testing

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Átírás:

XI. ERDÉLYI TUDOMÁNYOS DIÁKKÖRI KONFERENCIA KOLOZSVÁR, MÁJUS 23-24 OBJEKTUM-ORIENTÁLT ADATBÁZIS RENDSZEREK INDEXELÉSE Irányító tanár: Dr. Varga Vorca, Docens Babes-Bolya Tudományegyetem, Matematka és Informatka Kar, Informatka Rendszerek Tanszék Szerző: Smon Anna Babes-Bolya Tudományegyetem Matematka és Informatka Kar Matematka és Informatka Szak IV. Évfolyam Kolozsvár 2008 1

Tartalomjegyzék 1 Objektum-orentált adatbázsok. 3 2 Index Állományok...6 2.1 B+ fa... 6 2.2 CH-fa 11 2.3 HcC-fa..12 2.4 H-fa...17 3 Implementálás és következtetések 2

1. Objektum-orentált adatbázsok Az objektum-orentált adatbázs rendszerek a valós vlág természetes ábrázolásának és mntázásának szükségletéből fejlődtek k. Mnden enttás egy objektumként van ábrázolva, melynek állapota és vselkedésmódja van. A CAD (computer aded desgn, számítógéppel segített tervezés) és a CASE (Computer Aded Software Engneerng, számítógéppel segített szoftvertervezés) szoftver mplementálók az 1980-as évek végén észrevették, hogy a relácós adatbázsok nem felelnek meg az elvárásaknak. A relácós adatbázsok úgynevezett üzlet adatok (busness data) feldolgozására vannak tervezve, és nem támogatják a komplex adatokat és kapcsolatokat. Innen kndulva a CAD és CASE mplementálók konferencákat tartottak és tudományos ckkeket publkáltak, elmagyarázva, hogy mért lenne szükségük egy új, objektum-orentált modellre alapuló adatbázsra. Az eredmény olyan skeres lett, hogy pár évvel ezelőtt az parág megfgyelők azt jósolták, hogy az objektum-orentált adatbázsok (OOAB) át fogják venn a relácós adatbázsok helyét. Ez a jóslás nem teljesült, ezért sokan arra következtettek, hogy az OOAB rendszerek megbuktak. Az Object Desgn (az 1990-es évek egyk vezető cége az OOAB rendszerek körébe,) egyk alapítója, Dan Wenreb szernt [3] az OOAB mplementálók azzal a céllal hozták létre ezt az új típusú adatbázst, hogy azok a rendszerek használhassák, akknek nem megfelelő a relácós és nem azért, hogy átvegye a vezetést a relácós adatbázsoktól és a fent említett állítás csupán marketngfogás volt. Szernte az OOAB rendszerek elérték a céljukat. Az OOAB-nak kalakult egy stabl típusú pac szegmens, de sorolva a számítógépes grafka, mesterséges ntellgenca, térképészet, gyógyszerészet, távközlés, multméda és sok más rendszert. Ez a pac szegmens évről évre 30-40% nő. Az objektum-orentált adatbázsok egyk erős pontja a tárolásban áll: képes tároln bármlyen komplex objektumot teljes egészében, míg a relácós adatbázsban rendszerek szétszedk az adatot, hogy az alkalmas legyen táblákba való tárolásra, és újra összerakják a feldolgozásnál. Annak ellenére, hogy ez nagy előnyt jelent az objektum-orentált adatbázsok számára, az adatok lekérdezése lletve frssítése még mndg jobb optmalzálásra vár. 3

A lekérdezés és frssítés gyorsasága nagymértékben az ndexelés technkákon alapszk. Az objektum-orentált modell új tulajdonságokkal járult hozzá az adatbázs fogalmához, ezért a hagyományos ndexelés technkák nem teljesítenek jól mnden körülmények között. Például a relácós adatbázsok körében gen népszerű B+ fa nem teljesít megfelelően az OOAB-okban. Az objektumorentált adatbázsok öröklődés támogatása nagyon hasznos azon rendszerek számára, melyek gen komplex adatok feldolgozásával foglalkoznak. Vszont ez a tulajdonság plusz követelményeket s bevezet az ndexelés technkákba. Egy adott osztály példánya az apa osztály példányát s jelent egyben, ezért nem mndegy, hogy csak az apa osztály példánya között keresünk vagy leszármazott osztályanak példánya között s. A keresést két osztályra osztjuk: Osztály-keresés ha egy adott osztály példánya között keresünk. Herarcha-keresés ha egy teljes vagy részleges osztály herarchában szereplő osztályok példánya között keresés. Ennek következményeként, egy ndexnek két célt kell elérne: Hatékony osztály-keresést. Hatékony herarcha-keresést. Használhatnánk B+ fát, de ez azt jelentené, hogy herarchkus keresés esetén, a keresésben szereplő, mnden osztálynak megfelelő B+ fát át kéne vzsgáln. Teljesítménytanulmányozások kmutatták, hogy egy ndex egy teljes osztály herarchára jobban teljesít, mnt egy-egy ndex mnden osztályra a herarchából. A következőkben bemutatok három különböző ndexelés technkát, amelyből egyet mplementálok és tesztelek. Az ndexelés technkák jobb megértése érdekében, bemutatom a B+ fát, valamnt számunkra releváns műveletet. De először lássunk egy példát, melyre hvatkozunk majd a dokumentum több részeből. Legyen egy egyetem alkalmazottanak vázlatos objektum- orentált adatbázsa. Az Alkalmazottak osztálybók kettő másk öröklődk: Akadémkus és Admnsztratív osztályok. Az Admnsztratív osztállyal nem foglalkozunk. Az akadémkusok között lehetnek kutatók, doktorandusok és vezető tanácstagok s. Legyenek az Alkalmazottak osztály változó: AlkalmazottId, Név lletve Fzetés. 4

1. Ábra. Alkalmazottak adatbázsa Osztály-keresés: Adjuk meg az összes vezető tanácstag nevét. Vagy adjuk meg az összes olyan akadémkus nevét, akk nem tartoznak a vezető tanácsba, nem kutatók és nem doktorandusok. Herarcha-keresés: Adjuk meg az összes akadémkus nevét, melynek fzetése kevesebb, mnt 2000 új lej. 5

2. Index Állományok 2.1 B+ fa B+ fa egy olyan fa szerkezetű adatállomány, mely bztosítja az adatok gyors vsszakeresését. A B+ fa csomópontokból áll, melyek specáls esete a gyökér valamnt a levelek. Mnden kulcs megtalálható a rendezve a levelekben, míg a belső csomópontokban szereplő értékek rányításra használhatóak a keresés algortmusban. A B+ fa rendje, melyet d vel jelölünk, a fa csomópontjanak a kapactását jellemz. Ha a fa rendje d akkor, egy csomópont mnmum d és maxmum 2xd értéket tartalmazhat. A B+ fa szerkezet követelménye: Mnden út a gyökértől a levélg egyforma hosszúságú Mnden csomópont, am nem gyökér vagy levél, legalább d+1 és legfeljebb 2xd+1 gyerekre mutat A levél tartalmaz legalább d és legfeljebb 2xd érteket Specáls esetek: - ha a gyökér nem levél, legalább 2 gyerekre mutat - ha a gyökér levél s egyben, akkor legfeljebb d érteket tartalmazhat Egy tpkus csomópont szerkezete: K - a keresés - kulcs értéke P mutatok A keresés kulcsok értéke rendezett sorrendben találhatok mndegyk típusú csomópontban. Belső csomópontok eseten, a mutatok a gyerek csomópontokra mutatnak. A gyerekekre való 6

mutatás oly módon történk, hogy a P mutató alatt alfa kzárólag olyan retekeket tartalmaz, melyek ksebbek, mnt K, valamnt a 1 P + mutató alatt alfa kzárólag nagyobb vagy egyenlő értékeket tartalmaz, mnt K. Levelek esetében, a P, = 1, n 1 mutatók rekordokra mutatnak, melyek azon objektumok azonosítót tartalmazzak, melyek ndexelt változónak értéke megegyeznek a K értekkel. A P n mutató pedg a következő levélre mutat. 2. Ábra. B+ fa példa Műveletek a B+ fában: Keresés (k) - Olyan objektum azonosító keresése, mely k értékű ndexelt változóval rendelkezk, egy d rendű fában 1. Kezdjük a gyökérrel 1. 1 Megkeressük azt a legksebb K értéket, amelyre k < K 1. 2 Ha létezk lyen érték, akkor átugrunk a P segítségével a megfelelő gyerek csomópontra 7

1. 3 Ha nem létezk lyen érték és a csomópontban m darab mutató található, akkor a P m mutatót követjük 2. Ha fent azonosított mutatót követve elért csomópont nem levél, akkor az első pontban felsorolt lépéseket smételjük 3. Különben, az elért csomópont levél. Ekkor: 3.1 Ha létezk olyan, amelyre K = k, követjük P mutatót a keresett rekordra, ahol találhatóak a keresett azonosítok 3.2 Különben nem léteznek keresett típusú objektumok. Beszúrás (od, k) - Olyan objektum azonosító beszúrása, amelynek ndexelt változója k értékű, egy d rendű fába 1. A fent lert algortmussal, megkeressük azt a levelet, amelyben a k értéknek meg kell jelenjen 2. Ha : K = k, akkor az od objektum azonosítót beszúrjuk a P által azonosított rekordba 3. Különben, két esetet különböztetünk meg 3.1 Ha van hely a levélben, azaz a levél kevesebb értéket tartalmaz, mnt 2xd, akkor beszúrjuk a levélbe a (k,p) (érték,mutató) párost, ahol az új p mutató arra az új rekordra mutat, amely jelenleg meg csak a beszúrt objektumazonosítót tartalmazza 3.2 Különben, a csomópontot ketté kell hasítan A csomópont kettéhasításának lépése: 1. Beszúrjuk a levélbe az új (érték, mutató) párost 2. Létrehozunk egy új levelet és a rég levél utolsó d+1 darab (érték, mutató) párosat áthelyezzük az új levélbe. A rég, valamnt az új levelek utolsó mutatóját megfelelően beállítjuk 8

3. Ábra. Szúrjuk be az 5-ös érteket. 3. Legyen az új levél legksebb értéke l. Ekkor a (l,p) párost beszúrjuk a rég levél apa csomópontjába, ahol p egy mutató az új levélre. Ha a csomópontba nncs hely az új párosnak, akkor kettéhasítjuk. A belső csomópont kettéhasítása abban különbözk a levél kettéhasításától, hogy a fentebb szntre küldött (érték, mutató) páros nem marad meg a csomópontban. 4. Ábra. A levelet és a csomópontot kettéhasítjuk. 9

5. Ábra. Új gyökeret hozunk létre. 4. A csomópontok hasítása addg smétlődk, amíg nem jutunk el egy olyan csomóponthoz, amely nncs tel. Ha lyen csomópont nem létezk, akkor új gyökeret hozunk létre, amely tartalmazn fogja a (p1, k, p2) elemeket, ahol p1 mutat a rég csomópontra és p2 pedg a hasítás során létrehozott új csomópontra. A 3, 4, 5 ábrák szemléltetk a beszúrás lépéset. A következőkben tárgyalt ndexelés technkák ez az algortmus alapján végzk a beszúrást. Következtetések: A B+ fák mndg egyensúlyozott magasságúak. Mnden beszúrásnak és törlésnél a B+ fa lokálsan újra rendez magát. Ez poztív jellemző, mert nem szükséges perodkus átrendezés a teljesítmény megőrzése érdekében. Vszont ugyanakkor a szükségesnél több beszúrást, lletve törlést gényelnek a fent említett műveletek. Általában a fa rendje úgy van megválasztva, hogy egy csomópont betöltsön egy lemez blokkot, am tpkusan d=100. Gyakorlatban egy csomópont átlagosan 67% - ban foglalt, am d=100 eseten azt jelent, hogy egy csomópontnak 133 gyereke van. 10

Egy lyen tulajdonságokkal rendelkező 4 szntes fa képes tároln, pontosan, 312,900,700 különböző értéket. 4 133 = A B+ fa csomópontjanak nagy tarolás kapactásának köszönhetően a fa magassága általában kcs, ezért mnmalzálva vannak a lemezolvasás műveletek. A B+ fa hatékonyan támogatja az egyenlőség, lletve az ntervallumkeresést. Egy beszúrás, lletve törlés a B+ fában O ( Log N ) műveletet jelent, ahol F az átlagos gyerekek számát egy csomópontra, a N pedg a levelek számát jelent. F 2.2 CH-Fa B+ fára alapozva az első ajánlott módszer a CH-fa (class herarchy tree), am fgyelembe vesz az osztályok öröklődését és egy ndexet tart fent a teljes osztály herarchára. A belső csomópontjanak szerkezete megegyezk a B+ fa belső csomópontjanak szerkezetével, vszont a levél szerkezete már különbözk. A levelek tároljak a megadott osztály herarcha összes olyan objektumanak az azonosítót. A levél szerkezete: 6.Ábra CH fa levél szerkezete. K a kulcsértékek 11

Kulcs könyvtár (Key drectory) tartalmazza mnden osztályra a megfelelő osztály példánya azonosítónak a kezdet pozícóját. A CH-fa egyformán kezel az osztály-keresést, valamnt a herarcha-keresést és vszonylag egyszerűnek tűnk. A hátránya az, hogy túl sok felesleges adatot kell, hogy átszűrjön kmondottan, ha a herarcha osztály alsó szntjen található osztály példánya között keresünk. A másk hátránya az, hogy nem ábrázolja az öröklődés struktúrát természetesen. A keresés és beszúrás algortmusa hasonlóak a B+ fa keresés és beszúrás algortmusahoz. 2.3 HcC-Fa A HcC fa egy olyan fa szerkezetű ndex, amely fgyelembe vesz az osztályok herarcháját. Szerkezete B+ fa szerkezetéhez hasonló. Kétféle láncot használ az nformácó tarolására: Osztály lánc Osztály-herarcha lánc Háromféle csomópontból épül fel: Belső csomópont Levél Od (objektumazonosító) csomópont A Fa első szntjeben tálalhatóak a belső csomópontok, ezek után következve egy sznt levél, majd az od csomópontok több szntben, ahogy ez az -k ábrán látható. A felsorolt csomópont típusokat, lletve a lánc típusokat a következőkben részletesen tárgyaljuk. Az egyszerűség kedvéért feltételezzük, hogy adott egy osztály herarcha mely n darab osztályból épül fel. 12

Az od csomópontok szerkezete: Az od csomópontok, ahogy mar láttuk, fa alsó részét képezk és n+1 darab láncba vannak szétosztva. Mnden osztálynak az osztály herarchából megfelel egy-egy osztály lánc, míg az utolsó sznten tálalható herarcha lánc, ahogy azt a neve s sugallja, a teljes herarchának felel meg. Az osztály láncban tálalható od csomópontok szerkezete enyhen különbözk a herarcha láncban tálalható od csomópontok szerkezetétől. Az osztály láncbel od csomópontok kzárólag olyan objektum azonosítókat tartalmaznak, melyek az osztály láncnak megfelelő osztályból származnak és ndexelt változójuknak értéke megegyezk a kulcs értékkel. Egy osztály láncbel od csomópont egy bemenetele a következő szerkezetű: < kulcs érték, od lsta > A herarcha láncbel od csomópontok, melyek a fa utolsó szntjét képezk, olyan objektumazonosítókat tartalmaznak, melyeknek ndexelt változójuknak értéke megegyezk a kulcs értékkel, függetlenül attól, hogy melyk osztálynak a példánya. Egy lyen od csomópont a kulcs érték mellett n darab od lstát tartalmaz, melyek mndegyke egy-egy osztálynak felel meg, azaz egy adott osztály példányanak azonosítót tartalmazza. Egy herarcha láncbel od csomópont tpkus bemenetele: <kulcs érték, od lsta 1,.,od lsta m > Mndkét típusú láncban az od csomópontok össze vannak kötve, hogy megkönnyítse az od csomópontok között átmenetelt balról jobbra. A belső csomópont szerkezete:. A belső csomópont nagy mertekben hasonlít a B+ fa belső csomópontjához. Hasonlóan B+ fához, ha a HcC-fa rendje d, akkor egy csomópont legkevesebb d és legtöbb 2xd darab kulcsértéket tartalmazhat. A P mutatok a gyerekekre mutatnak. K kulcsértékek a keresés rányítására alkalmasak, amíg a 13

7. Ábra HcC fa belső csomópont szerkezete. A fontos különbség azonban a csomópontban megjelenő btmapek. A K kulcsérték után következő btmapban az egyk bt akkor és csaks akkor 0 értékű, ha a megfelelő osztály egyk példányának sem az ndexelt változójának érteke nem található a K 1 és kulcsértékek ntervallumában. K 8. Ábra HcC-Fa szerkezetének vázlata. 14

A levél szerkezete: 9. Ábra A HcC fa levél szerkezete. Mnden kulcsértéknek megfelel anny darab mutató, ahány 1-es érték található a btmapben, legyen ez m darab. A K érték után közvetlenül következő P, = 1, mmutató az osztály lánc j megfelelő od csomópontjara mutatnak. A K érték után közvetlenül következő P + 1 mutató a herarcha lánc egy csomópontjára, j n míg az utolsó P mutató a következő levélre mutat. A levelekben, akárcsak a belső csomópontokban a kulcsértékek rendezve találhatóak és a levelekben mndegyk kulcsérték megjelenk. A keresés: Legyen cdsearch a keresésben érdekelt osztályok halmaza és [ v, 1 v] 2 a keresés ntervalluma. A továbbakban részletezem a keresést a négy fele keresés típusra. 1. Egy osztálybel, adott értékű ndexelt változóval rendelkező objektumok keresése. v = v és cdsearch számossága 1 1 2 1.1 Megkeressük azt a levelet, mely tartalmazza a v 1 értéket, a B+ fánál bemutatott módszerrel. 1.2 Ha létezk lyen levél, akkor a K = v1 kulcs érték után található megfelelő mutató segítségével továbblépünk az adott osztályhoz rendelt osztály láncbel od csomópontra, ahol megtalálhatóak a keresett objektum azonosítok. 1.3 Ha nem létezk lyen levél, akkor a keresett típusú objektumok nem léteznek. 15

2. 2. Egy osztálybel, [ v 1, v 2 ] ntervallumba eső értékű ndexelt változóval rendelkező objektumok keresése. cd search számossága 1 2.1 Megkeressük azt a levelet, amely tartalmazza a legksebb v 1 K n kulcs értéket. 2.2 A 2.1 alpontban azonosított levélből átugrunk a megfelelő mutató segítségével az adott osztályhoz rendelt osztály lánc megfelelő od csomópontjára. Az osztály láncon tovább haladunk, amíg el nem érjük azt az od csomópontot, amely tartalmazza a legnagyobb K v2 kulcs értéket. 2.3 Ha léteznek lyen csomópontok, akkor megtálalhatóak benne a keresett objektum azonosítok. 2.4 Különben, a keresett típusú objektumok nem léteznek. m 3. Adott értékű ndexelt változójú objektumok keresése, melyek mndegyke cd search -ben található egyk osztály példánya. v = v 1 2 3.1 Megkeressük azt a levelet, amely tartalmazza a v 1 kulcs értéket. 3.2 Ha létezk lyen levél, akkor a K = v1 kulcs érték után következő n+1 - k mutató segítségével átugrunk a herarcha lánc megfelelő od csomópontjára, ahol kválasszuk a v 1 -nek, valamnt a cdsearch - bel osztályoknak megfelelő objektumazonosítókat. 3.3 Ha nem léteznek lyen csomópontok, akkor a keresett típusú objektumok nem léteznek. 4. [ v 1, v 2 ] ntervallumba eső értékű ndexelt változóval rendelkező objektumok keresése, melyek mndegyke cd search -ben található egyk osztály példánya. 4.1 Megkeressük azt a levelet, amely tartalmazza a legksebb v 1 K n kulcs értéket 16

4.2 Ha a cdsearch halmazban megtalálható az osztály herarcha mndegyk osztálya, akkor a fent azonosított levélből átugrunk a K n - nek megfelelő mutató segítségével a herarcha lánc megfelelő od csomópontjára. Innen a herarcha láncon előre haladunk, amíg el nem érjük azt az od csomópontot, amely tartalmazza K legksebb kulcs értéket, amelyre K v2. Az utón áthaladt od csomópontok m tartalmazzak a keresett objektumazonosítókat. 4.3 Különben, mnden osztályra a cd search halmazból a 2.1 alpontban bemutatott keresést alkalmazzuk. 4.4 Ha nem léteznek a 4.2, valamnt a 4.3 alpontban keresett od csomópontok, akkor a keresett típusú objektumok nem léteznek. m A keresés, bármlyen keresés típusra, korább stádumokban leállhat, ha észreveszzük, valamely belső csomópont vagy levél btmapjából, hogy az adott osztályoknak nem léteznek példánya, melyek ndexelt változónak értéke az általunk megadott ntervallumba legyenek. A beszúrás a B+ fa beszúrásához hasonlóan történk, tt vszont ügyeln kell a két lánctípus frssítésére s. 2.4 H- fa A H-fára alapuló ndexelés technka természetesen támogatja az osztály herarcha szerkezetét. Az osztály herarcha mnden osztályának megfelel egy H-fa, melyek az öröklődésnek megfelelően egymásba vannak ágyazva. A 1. Példában megadott osztály herarchát ndexeljük a Fzetés változója szernt. Ekkor a beágyazás következőképpen fog alakuln: 17

10. Ábra H-fa herarcha. Osztály-keresés: Adjuk meg az összes vezető tanácstagot, aknek a fzetése 5000 új lej felett van. Herarcha-keresés: Adjuk meg az összes akadémkust, aknek a fzetésese 1000 és 5000 új lej között van. Az osztály-keresésre adott példa esetén a H VezetőTanácsTag fát kell átjárn. Ez az ndexelés technka lehetővé tesz, hogy a H-fákat külön s kezelhessük a H-fa herarchától. Ha az L-mutatókat nem vesszük fgyelembe, akkor egy B+ fát kapunk. A herarcha-keresésre adott példa esetén, átjárjuk a teljes H Akadémkusok fát és onnan az L- mutatókon haladva tovább, átjárjuk mnden osztály egy-egy alfáját. Nem szükséges mndegyk H-fát teljesen átjárn a herarchából. Legyen N a H Apa fa, lletve a n a HGyerek fa csomópontja és a N csomópontból egy L mutató az n csomópontra mutasson. Ez azt jelent, hogy az N csomópontból elérhető az a H Gyerek fabel alfa, melynek gyökere az n csomópont. Jelentsen L(n) egy n gyökerű alfára mutató L-mutatót. 18

A helyes beágyazást bztosítják a következő szabályok: Ha N csomópontból egy L mutató n csomópontra mutat, akkor a n gyökerű alfa kulcsértékenek [mn,max] ntervalluma benne kell, hogy legyen a N csomópont kulcsértékenek [mn,max] ntervallumába, kvételt képez az az eset, ha N egyben gyökér s. Nevezzük ezt a feltételt érték bennfoglalás feltételnek. Mnden levél a H Gyerek fából elérhető kell, hogy legyen a H Apa fából. Az első szabály bztosítja, hogy a kulcsértékek helyesen rányítsak a keresést a beágyazott alfák felé. A másodk szabály bztosítja, hogy mnden kulcsérték megtalálható legyen. A H-fa hatékonyságát a következő szabályok bztosítják: Mnden levélre a H Gyerek fából létezk egy és csaks egy elérés útvonal H Apa fából. Feltételezzük, hogy n csomópont gyereke n 1,..., n k. Ha N csomópontban léteznek L( n) = 1, k L-mutatók, akkor ezeket k kell cseréln egy, L( n) L-mutatóra. A beágyazott alfa a lehető legksebb kell, hogy legyenek. Például, legyenek N,..., 1 N l a N gyereke, n,..., 1 n k a n gyereke és létezzen N csomópontban L(n) L-mutató. Ekkor, ha {1, l}, úgy hogy N csomópontba beágyazható legyen valamely n j j {1, k }, akkor behelyezzük L( n j ) L-mutatót L-mutatót L( n 1 ),, L( n j 1 ), L( n j + 1),, L(n n k ) L-mutatókra. N csomópontba és kcseréljük L(n) Az érték bennfoglalás feltételben szereplő bennfoglalás a lehető legszorosabb kell, hogy legyen. Feltételezzük, hogy N csomópontba, lletve N egyk N gyerek csomópontjába egyaránt beágyazható n csomópont. Ekkor a beágyazást csomópontba végezzük. N 19

A keresés: Három esetet különböztetünk meg, a H-fában való keresésben: 1. Ha egy adott osztály bzonyos példányat keressük. 2. Ha a gyökértől ndulunk, egy herarcha-keresésben. 3. Ha egy belső csomóponttól ndulunk, ahova egy L-mutató révén jutottunk, egy herarcha-keresésen belül. Az első esetben a H-fában ugy keresünk, mnt egy B+ fában és nem vesszük fgyelembe az L-mutatókat. A herarcha-keresés esetén, a keresés a gyökér osztálynak megfelelő H-fában kezdődk és az L-mutatókat követve keresünk, a keresés krtérumoknak megfelelő H-fákban s. Legyen n az a csomópont, ahol épp vagyunk a keresésben, [, ] amelybe az ndexelt változó értéke benne kell, hogy legyen és melyek érdekeltek a keresésben. v v pedg az ntervallum, 1 2 C ds azon osztályok halmaza Keresés algortmus: Keres ( n, v 1, v 2, Ha n levél C ds ) Mnden kulcsértékre, mely [, ] v v ntervallumba esk, követjük a megfelelő 1 2 mutatót és a talált azonosítókat hozzáadjuk a megoldáshoz. Ha max n < v 2 Akkor átugrunk a következő levélre, legyen ez n Keres( n, v 1, v 2 ) Vsszamenőleg n csomópontnak n ős csomópontján felfele Ős Követünk mnden olyan L-mutatót, melyre a beágyazott fa mnmum értéke benne van a [, ] v1 v 2 ntervallumba és amely ds C -ben szereplő Különben egyk osztálynak megfelelő H-fa egyk csomópontjára mutat 20

Ha K legksebb kulcsérték, am nagyobb, mnt v 2 Követjük P mutatót az n csomópontra Keres( n, v 1, v 2 ) Különben Követjük az utolsó mutatót n csomópontból n csomópontra Keres( n, v 1, v 2 ) Vége A beszúrás a H-fába a B+ fa beszúrás algortmusát követ, de mnden elem beszúrásánal, akár levélbe, akár belső csomópontba, frssíten kell a létező L-mutatókat vagy újat kell létrehozn. 21

3. Implementálás és Következtetések A H-fát mplementáltam C++-ban, teszteltem valós adatokra és végkövetkeztetéseket vontam le, melyeket tt bemutatok. Mnden H-fát külön bnárs fájlba tárolok. Khasználva a bnárs fájl fő jellemzőjét, mndg arra a csomópontra ugrok, amelyre szükségem van. A csomópontoknak előre meghatározott hosszuk van, azaz 4K hosszúra vannak megtervezve. A rend d maxmálsan 100 lehet, tehát egy csomópontba maxmálsan 200 elem fér el, amelyhez 201 mutató és 100 L-mutató tartozk. A csomópont osztály szerkezete: template <class T> class Node { Prvate: nt occupancy; bool leaf; T values[200]; unsgned long ponters[201]; nt nrlponters; lpontertype lponters[100]; NodePart() {};.. }; Amnt látjuk a csomópontok bármlyen típusú adatot tárolhatnak, az egyedül feltétel az, hogy az adat típusra legyen értelmezve rendezés művelet, mert az adatok a levelekben rendezve kell legyenek. A mutatókat unsgned long típus formájában mplementáltam, ezek egy memóra címet tartalmaznak, azaz a csomópont kezdő pozícójának a címe. Az occupancy és leaf változók megadják, hogy menny rész foglalt a csomópontból, lletve azt, hogy levelek-e vagy nem. Az lpontertype struktúra: struct lponter { publc: 22

}; nt mn; nt flenr; unsgned long ponter; nt max; Egy L-mutató egy H-fa egyk csomópontjára mutat. A ponter változó tartalmazza ennek a csomópontnak a kezdő pozícóját és a flenr annak a fájlnak az azonosítóját, amelyben a H-fa található. A mn és max változók tárolják a ponter által azonosított csomópont gyökerű alfa legksebb és legnagyobb értéket. Ezek azért szükségesek, hogy tudjuk érdemes-e tovább menn a kereséssel az azonosított alfába. A felépítés: Az ndex elkészítése során, először az osztály herarcha alsó szntjén található osztályokra építjük fel a H-fákat, majd felfelé haladunk és közben beágyazzuk a már meglévő H-fákat. A H-fa építése az osztály herarcha legalsó szntjén található osztályara megegyezk a B+ fa építésével. Ha egy osztálynak nncs egy példánya sem, akkor az ennek megfelelő H-fa egy gyökérből fog álln, amely tartalmazza az L-mutatókat. A beágyazás algortmusa: Beágyaz (N, n) // n gyökerű alfát akarjuk beágyazn N csomópontba Ha N nem gyökér Ha N levél akkor klép Ha mn, max n mn, max alfa n alfa N N akkor klép Ha N gyereke levelek Akkor Különben Legyen NL. k = L (n) NLaz. k N csomópontban a kővetkező L-mutató 23

Legyenek N,..., 1 N t a N csomópont gyereke Ha {1,..., t} úgy hogy Akkor Különben mn,max n mn,max alfa n alfa N N Beágyaz ( N,n) Legyenek n,..., 1 ns az n csomópont gyereke Mnden = 1, t és j = 1, s Nest( N, n) j Ha egyk n j csomópontra sem skerült a beágyazás Akkor Legyen NL. k a következő L-mutató N csomópontban Különben NL. k = L(n) Mnden olyan n j csomópontra, melyre nem skerült a beágyazás Legyen NL. k a következő L-mutató N Vége Különben Legyen NL. k = L (n) csomópontban NL. k = L( n) j NL. k a következő L-mutató N csomópontban Ha beágyazn akarjuk H Gyerek fát a H Apa fába, akkor párhuzamosan átjárjuk a két fát és megpróbáljuk az L-mutatókat a H Apa fában mnél lentebb nyomn a levelek felé. 24

Feltételezzük, hogy n csomópont H Gyerek gyökere és N csomópont H Apa gyökere. Ekkor először megpróbáljuk beágyazn n gyereket N gyerekebe. Ha ez nem skerül, akkor beágyazzuk n csomópontot N csomópontba. A keresés a 2. fejezet 3. alfejezetében leírt algortmus alapján van mplementálva. A legrosszabb esetben a H-fa ndex herarcha úgy teljesít, mntha egy-egy B+ fát tartanánk fent mnden osztályra. Ez akkor következk be, amkor a H-fa herarcha mnden L- mutatója gyökérben található és gyökérre mutat. Egy egyszerű példán keresztül megmutatom mennyre csökken a szükséges csomópont beolvasások száma H-fa ndex állomány esetén, mnt B+ fánál. 11. Ábra H-fa herarcha részleges példa. Feltételezzük, hogy életkor szernt ndexeltünk bzonyos személyeket. Kérdés: Adjuk meg az összes 5 éves személyek nevét. 25

Megoldás: A H Apa fában lemegyünk a képen látható baloldal levélre, onnan megtaláljuk a Apa osztálybel keresett objektum azonosítókat, nnen pedg az L-mutató segítségével átugrunk a H Gyerek megfelelő levelére, ahonnan szntén megtaláljuk a keresett azonosítókat. Ez összesen 4 darab csomópont beolvasását jelent. Ha H-fa ndexállomány nélkül, B+ fák segítségével akarjuk megoldan a kérdést, akkor mndkét fát külön-külön át kell járn. Ez összesen 6 darab csomópont beolvasását jelent. A csomópont beolvasások száma nem mndg ksebb a H-fa ndex technkánál, mnt a B+ fánál, vszont soha sem nagyobb. A H-fák működését kpróbáltam egy öt darab osztályból álló herarchán, melynek szerkezete megegyezk a 10 Ábrán látható szerkezettel. Az adatokat random módón választottam k a [0, 1000] ntervallumból, és mnden fába 1000 elemet szúrtam be. Végrehajtva többször a keresést, erre az eredményre jutottam: 500 keresést a H-fa ndex 4,312 másodperc alatt, a B+ fa ndex 9.703 másodperc alatt hajtott végre. Végkövetkeztetés: Ez a dolgozat nem azt akarja bzonyítan, hogy a H-fa mndenképp jobb a B+ fánál. Mndkét ndexelés technka, különböző körülmények között teljesít a legjobban. Az adatbázs tervező fel kell, hogy mérje a követelmények típusat és ennek alapján kell válasszon a különböző ndexelés technkák között. Vszont, ha az adattípusok vagy azok egy része osztály herarchát formálnak, akkor mndenképp megfelelőbb és hatékonyabb a H-fa ndexelés technkát választan. 26

Könyvészet 1. Y. Huang, J. Chen, The study of ndexng tecnques on object orented databases, 2000 2. C.C. Low, B.C. Oo, H. Lu, H-trees: a dynamc search ndex for OODB, ACM SIGMOD Internatonal Conference, 1992 3. D. Wenreb, Object-Orented Database Management Systems Succeeded, Intertnatonal Conference On Object Databases, Berln, 2008 4. H. Ullman, J. D. Wdom, J. D. Garca-Molna, Database Systems: The Complete Book, Prentce Hall, 2001 27