• Nem Talált Eredményt

Összefoglaló megjegyzések

In document Irta:Radó PéterTanulmányok 156/1984 (Pldal 162-166)

2. Implementáció

2.2. Optimizálási algoritmusok. Optimizáló

2.2.6. Összefoglaló megjegyzések

A megvizsgált algoritmusok néhány közös gondolatot - módszert, észrevételt - tartamaznak. Ezeket nézzük végig még egyszer, megfigyelve, hogy az egyes algoritmusoknál mi­

képp bukkannak fel az azonos ötletek. Szolgálhat némi tanul­

sággal programozástechnikai - implementációs megoldások vizs gálata is.

Jól láthatóan /az algoritmusok alapján/ érdemes relá­

cióalgebrai terminológiát használni. A nem relációalgebrai nyelveknél is világos, hogy melyikben mit jelent a pro­

jekció, korlátozás, és az illesztés. Mivel a relációalgeb­

ra a legprocedurálisabb, a gép számára is a relációalgebra interface a legkönnyebben érthető, és az optimizálási al­

goritmusoknak is kiindulópontot ad, atomi műveleteivel, melyek sorozata alkotja a lekérdezést.

A Chang-Smith algoritmus fogalmazta meg az egyváltozós korlátozások mielőbbi elvégzésének és összevonásának elvét.

Előnyei nyilvánvalóak: minél korábban érdemes a manipulá­

landó reláció méretét csökkenteni, és egy relációba tarto­

zó feltételeket nem érdemes a reláció többszöri végigolva- sásával ellenőrizni. Nézzük meg ennek az elvnek a megvaló­

sulását és módosulásait az egyes algoritmusoknál!

A Palermo algoritmus minden reláción csak egyszer megy végig, tehát az egy relációba tartozó feltételeket a lekér­

dezésben elfoglalt pozíciójuktól függetlenül egyszerre elle­

nőrzi. Ügyes implementáció - az ismertetett LIDAS-ban erre nincs utalás, de feltételezzük, hogy ilyen - az értéklista készítésénél kihasználja az indexet /ha van/. Az egyválto­

zós korlátozások illesztés előtti elvégzését jelenti, hogy a párlisták építésénél adott konjunkcióban lévő egyváltozós korlátozásokat figyelembe veszi.

A TID algoritmusnál is érvényesül ez az elv. Az

egy-(

változós korlátozások kitüntetett szerephez jutnak /Pl és P2 tipusu feltételek/, és noha az algoritmus index-középpor-~

tusága miatt elsősorban a Pl-eket tudja jól felhasználni, a P3,P4,P5 feltételek /ezek jelentik az illesztést/ fel­

dolgozása előtt a belső blokkban előbb a Pl, majd a P2 tipusuak is kiértékelésre kerülnek.

Mindennek ellenére lehet olyan lekérdezést Írni, ahol ez az elv csorbát szenved. Az alábbi lekérdezés azoknak a pozitív hősöknek a nevét Írja ki, akik 1-nél több dolgozót foglalkoztató részlegekben dolgoznak /2.2.1.

adatbázisát használjuk/:

SELECT NÉV

FROM D IN DOLGOZÓ

WHERE BESOROLÁSÉ POZITÍV HŐS' AND RÉSZLEGKÓD IN

SELECT RÉSZLEGKÓD FROM R IN RÉSZLEG WHERE 1 >

SELECT COUNT (x) FROM DOLGOZÓ

WHERE RÉSZLEGKÓD=R.RÉSZLEGKÓD Ennél a lekérdezésnél az algoritmus ha a külső blokk feltételeinél a "Besorolás"-t tartalmazót P2 típusúnak /nincs index "Besorolás"-ra/, a "Részlegkód"-ot tartal­

mazót pedig Pl-nek találja, akkor lefelé haladva elvég­

zi a Részleg és Dolgozó relációk illesztését, anélkül, hogy a Részleg sorait a "Besorolás"-ra vonatkozó felté­

tel korlátozná /mint az pl. a Palermo-algoritmusnál meg­

történhet/. Persze nyilvánvaló, hogy ezt a lekérdezést egyszerűbben is meg lehet Írni SEQUEL-ben, oly módon, hogy a korlátozást hajtsa végre előbb az algoritmus.

A PRTV algoritmusát leiró ÜHALL 76] cikk két fontos megjegyzést tesz evvel az elvvel kapcsolatosan: nem mindig

lehet az illesztés előtt korlátozni, és nem is mindig ér­

demes. Az előbbit természetesen minden algoritmus figyelem­

be veszi, az utóbbit nem, ugyanis annak eldöntése, hogy mi­

kor érdemes, mikor nem, nehezen becsülhető. Az SQL/DS algo­

ritmus, mely a rendszer által vezetett statisztikákon ala­

pul, tudj a talán ezt a becslést legjobban elvégezni, és en­

nek alapján választani az optimális illesztés-korlátozási- projekció algoritmust.

Az INGRES ÜSTÖN 76] algoritmusa elsőnek az egyváltozós korlátozásokat hajtja végre /már ha lehet, és az OR-ok ezt nem teszik lehetetlenné/. A módosított ÜWONG 76] algoritmus már azt emliti, hogy csak akkor érdemes ezt megtenni, ha a korlátozásban szereplő változó valószinüleg helyettesitésre kijelölt. /A helyzet azért bonyolult, mert a korlátozás ered­

ményétől függ, hogy kij.elöljük-e a változót helyettesitésre./

Az SQL/DS algoritmusa az egyváltozós korlátozások mi­

előbbi elvégzésének elvét tulajdonképpen igen kritikusan szem­

léli, és pl. tBLAS 77] négy algoritmusából is kiderül, hogy ennek az elvnek az érvényessége - legalábbis az SQL/DS fizikai szervezése mellett - nagymértékben függ a lehetséges elérési utaktól.

A Chang-Smith algoritmus projekcióra vonatkozó elve en­

nél egyszerűbb és nyilvánvalóbb. Kisebb méretű /sorhosszuságu/

relációkkal kényelmesebb dolgozni, ésszerűtlen lenne a feles­

leges adatot cipelni. Az algoritmusok általában - ésszerűen - úgy értelmezik ezt az elvet, hogy le kell vágni a szükségte­

len adatmezőket, de a duplikátumok eltávolításával /ami ren­

dezést jelent/ nem foglalkoznak. Érdemes megemlíteni még, hogy a sorazonositóval dolgozó algoritmusok /Palermo, TID, CBLAS 77] 4. számú/ szempontjából ennek az elvnek nyilván

nincs jelentősége.

Az INGRES filozófiában alapvető szerep jut a helyette­

sítendő változó kijelölésének, C.WONG 76] bonyolult algorit­

musokat javasol /nem tudjuk, hogy implementálta-e valame­

lyiket az INGRES/. CSTON 76j egyszerűen azt a változót he­

lyettesíti, mely az egyváltozós korlátozások elvégzése után legkisebbé vált reláción van értelmezve.

A Palermo-algoritmus ilyen szempontból még egyszerűbb stratégiával dolgozik. Mindig azt a változót helyettesíti, amelyik a legkisebb reláción van értelmezve /az egyválto­

zós lekérdezések figyelembe vétele nélkül/. tWONG 763 ez ellen több érvet is felhoz /ld. 2.1.4./

A Chang-Smith és a PRTV algoritmus a relációalgebrai interface miatt adott sorrendű műveleteket kapnak, a fát módositó algoritmus illesztési sorrendek felcserélésével nem foglalkozik /ilyen szempontból hátrány a relációalgebra nyelv/. Igaz viszont, hogy az illesztési algoritmus egy megadott készletből történő választása a helyettesítendő változó kijelölését /is/ jelenti.

A TID algoritmus a SEQUEL nyelv szerkezete miatt nem foglalkozik a helyettesítendő változó kijelölésével, hi­

szen azt az egymásba ágyazott blokkok sorrendje eleve - nem feltétlenül célszerűen - meghatározza.

■ Az SQL/DS statisztikai becslések alapján keresi a he­

lyettesítések optimális sorrendjét.

A programozástechnikai megoldások közül kiemelkedő fontosságú a rekurzió. Ez érthető, hiszen a módszerek ál­

talában egyváltozós lekérdezésekre vezetik vissza a több­

változósakat, lépésenként csökkentve a változók számát.

Ezt egészen pontosan láttuk a TID és a dekompoziciós al­

goritmusnál. A Palermo-algoritmusra ez nem igaz, ez inkább változónként egyszerű ciklust használó algoritmusnak tűnik.

A Chang-Smith algoritmusnál és az SQL/DS algoritmusnál a

felépített fák bejáráshoz, transzformálásához kell a rekurzió.

Mindenesetre célszerűnek látszik rekurziót biztositó ma- gasszintü nyelven megirni az Optimizálót. /Ez is a gya­

korlat, hiszen: LIDAS-MODULA-2, TID és SQL/DS-PL/1, INGRES-C/.

Az implementációs eltérések közül kiemelkedően fontos­

nak tartjuk a "forditóprogram" megoldást /nem csak mi, rendszer alkotói isUCHAM 8ll/. Az előnyeiről volt már szó, most a hárányait emlitjük:

a kódgeneráláshoz szükséges többletidő*

• az Adatkezelő Modulok tárolásához szükséges lemez­

terület .

CCHAM 81 ál (szerint a kódgenerálási többletidő méréseik

szerint általában az optimizáláshoz szükséges idő 1/3 része, egy-egy Adatkezelő Modul pedig 1000-1500 byte-ot foglal le.

In document Irta:Radó PéterTanulmányok 156/1984 (Pldal 162-166)