1/98
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Mit nevezünk felejtő és nem felejtő tárolónak?
Felejtő (volatile) tárolók azok, amelyek áramkimaradás esetén elvesztik tartalmukat, ilyen a cache és a főmemória (random elérésűek). Nem felejtő (non-volatile) tárolók megőrzik az adatokat, ilyen a flash memória, mágneses lemez, optikai lemez és a mágnesszalag (szekvenciális elérésűek).
Mi az a RAID?
Redundant Arrays of Independent Disks, azaz független lemezek redundáns tömbje. Célja a lemez IO teljesítmény javítása és/vagy a megbízhatóság (hibatűrés) növelése több lemez használatával.
Mit nevezünk puffernek?
Egy memória-terület, amelyet az adatbázis-kezelő (ABKR) használ az adatok ideiglenes tárolására. Célja, hogy gyorsítsa az adatokhoz való hozzáférést.
Mi az a lapcsere (lapozás, paging)?
Az a folyamat, amikor a pufferkezelőnek be kell olvasnia egy blokkot (buffer miss), de nincs üres hely a pufferkészletben, ezért egy meglévő blokkot el kell távolítania (kiírnia a lemezre, ha módosult), hogy helyet csináljon az újnak.
Mit nevezünk piszkos puffernek?
Olyan puffert, amelyben lévő adatokat módosították, de a módosítások még nem lettek kiírva a lemezre (Dirty flag jelzi).
Milyen fájlszervezési módok vannak?
Kupac szervezés (heap), Rendezett fájlok (sorted), Hasított fájlok (hashing), Fa-struktúra alapú szervezés.
Mit jelent a kupac fájlszervezés?
A blokkok rendezetlen kollekciója. A rekordokat a blokk első üres helyére tesszük a beérkezés sorrendjében. Hatékony a beszúrás, de lassú a keresés.
Mit jelent a rendezett fájlszervezés?
Egy adott mező szerint rendezetten tároljuk a rekordokat és blokkokat. Támogatja a gyors logaritmikus keresést, de a beszúrás és törlés lassú.
Mi az a memóriahozzáférés igazítás (word-aligment)?
Az adatok CPU „szóméretéhez" (pl. 4 vagy 8 bájt) való igazítása a rekordon belül. Célja, hogy a mezők a szóméret többszörösén kezdődjenek, például „padding" (üres bitek) használatával vagy a mezők átrendezésével.
Milyen céljaink vannak a fájlszervezés kiválasztásánál?
Három fő cél: gyors lekérdezés, gyors adatmódosítás, és minél kisebb tárolási terület igénye.
Mit nevezünk egyenletességi feltételnek a lekérdezések esetén?
Azt a feltételezést, hogy az A=a feltételnek eleget tévő rekordok száma nagyjából egyforma, függetlenül az „a" konstans értékétől.
Milyen algoritmussal kereshetünk rendezett állományban?
Bináris kereséssel (logaritmikus időben).
Milyen hasításokat különböztetünk meg a kosarak száma szerint?
Statikus hasítást és dinamikus hasítást.
Mit nevezünk statikus hasításnak?
Amikor a kosarak száma előre adott és nem változik.
Mit nevezünk dinamikus hasításnak?
Amikor a kosarak száma változhat (pl. növekedhet az adatok mennyiségével).
Milyen dinamikus hasításokat ismerünk?
Kiterjeszthető hasítás (Extendible hashing) és Lineáris hasítás (Linear hashing).
Milyen szempontok alapján kell hasító függvényt választanunk (2 szempont)?
A függvény legyen gyors, és rendelkezzen alacsony „collision rate"-tel (ütközések arányával).
Mikor jó egy hasító függvény és ilyenkor milyen hosszúak a blokkláncok?
Ha egyenletesen sorolja be a rekordokat. Ilyenkor a blokkláncok hossza B/K blokk (ahol B a blokkok száma, K a kosarak száma).
Ha túl nagynak választjuk K-t hasításkor, akkor ez milyen problémát okozhat?
Ha K (kosarak száma) túl nagy a rekordok számához képest, akkor sok kosár üresen vagy csak részben töltve maradhat, ami pazarolja a tárhelyet (tárolási terület kihasználatlansága).
Milyen keresésre nem jó a hasító indexelés?
Intervallumos keresésre (a < A < b) és folytonos értékek keresésére.
Lineáris hasító index esetén mikor nyitunk meg új kosarat?
Minden beszúrásnál ellenőrizzük: ha a rekordok aktuális száma és a kosarak számának hányadosa (r/n) átlép egy megadott felső határt (pl. 80%-os telítettség), akkor új kosarat nyitunk.
Mire használhatjuk a hasító táblákat az adatbázisban?
Indexstruktúraként, belső metaadatok tárolására (pl. laptábla), és temporális adatstruktúraként (pl. hash join során).
Mit nevezünk elsődleges indexnek?
Olyan indexet, amelynél a fájl (főfájl) rendezett a keresési kulcs alapján. Csak egy ilyen lehet.
Mit nevezünk másodlagos indexnek?
Olyan indexet, ahol a főfájl nem rendezett a keresési kulcs szerint. Több is létezhet belőle.
Mit nevezünk sűrű indexnek?
Olyan indexet, ahol minden keresési kulcshoz (minden rekordhoz) tartozik egy index bejegyzés.
Mit nevezünk ritka indexnek?
Olyan indexet, ahol csak a blokkokhoz tartozik egy-egy indexbejegyzés (pl. blokkonként az első rekord kulcsa).
Mit hívunk fedőértéknek?
Ritka indexben való keresésnél a legnagyobb olyan indexértéket, amely a keresett értéknél kisebb vagy vele egyenlő.
Mit nevezünk többszintű indexnek?
Amikor az indexfájl túl nagy, ezért az indexet is indexeljük (akár több szinten keresztül).
Mit jelent a B+ fában a „B"?
B+ fában a „B" jelentése Kiegyensúlyozott fa (Balanced tree). Ez azt jelenti, hogy a fában minden út a gyökértől egy levélig egyforma hosszú
Hány kulcsot és mutatót tartalmaz egy B+ fa csúcs?
Legfeljebb n kulcsot és n+1 mutatót tartalmazhat (ahol n a fa paramétere).
Hogyan érdemes tárolni az ismétlődő értékeket a B+ fában?
A leggyakrabban használt módszer valamilyen azonosító (pl. elsődleges kulcs) hozzáfűzése a kulcshoz, hogy egyedi legyen. Másik módszer a túlcsordulás blokkok használata.
Milyen költséget veszünk figyelembe a fizikai operátorok esetén?
A lemez IO (blokkolvasások/írások száma) költségét és a kimenet (output) méretét. Manapság a CPU időt is figyelembe veszik SSD-k miatt.
Milyen relációs algebrai műveleteket vezethetünk vissza rendezésre?
Vetítés (ismétlődések szűrése), Halmazműveletek (Unió, Metszet, Különbség), és természetesen maga a Rendezés művelet.
A rendezés milyen két fajtáját különböztetjük meg?
Belső rendezés (internal sorting - memóriában) és Külső rendezés (external sorting - lemezen).
Mennyi a belső rendezés IO költsége?
2 * B_R (egyszer be kell olvasni az összes blokkot, és egyszer ki kell írni őket).
Külső összefésülő rendezésnél mit csinál a rendezési (sort) lépés?
Futamokat (runs) készít: beolvas annyi blokkot, amennyi a memóriába fér, rendezi őket, majd kiírja a rendezett futamot a lemezre.
Külső összefésülő rendezésnél mit csinál az összevonási (merge) lépés?
A létrehozott rendezett futamokat összefésüli hosszabb futamokká, vagy a végső rendezett kimenetté.
Külső összefésülő rendezéskor mikor kell több menetben végezni az összevonási lépést?
Ha a futamok száma (N) nagyobb, mint ahány blokk elfér a memóriában (M), azaz N > M.
A vetítés milyen három lépés megvalósításából áll?
1. Felesleges mezők törlése, 2. Rendezés (az ismétlődések egymás mellé kerüléséhez), 3. Duplikált rekordok törlése.
Az összekapcsolásoknak milyen megvalósításait használjuk (5 algoritmus)?
1. Egyszerű nested-loop join, 2. Block nested-loop join, 3. Index nested-loop join, 4. Sort-merge join, 5. Hash join.
Az összekapcsolásoknál melyik táblát választjuk külső táblának általában?
A kisebb méretű relációt (táblát).
Milyen esetekben érdemes a sort-merge összekapcsolást használni?
Ha a táblák már rendezve vannak, ha a kimenetet rendezni kell, vagy ha egyenlőség alapú/természetes összekapcsolást végzünk.
Milyen típusú összekapcsolásokra nem használható a hash-join?
Nem egyenlőség alapú (pl. intervallumos/egyenlőtlenség) összekapcsolásokra nem jó, mivel a hash függvény csak az egyezést garantálja.
Mi a lekérdezések optimalizálásának a célja és miket használunk fel ehhez?
Cél: A lekérdezéseket gyorsabbá tenni. Felhasznált adatok: táblákra vonatkozó paraméterek, statisztikák, indexek.
Mi az a relációs algebrai kifejezésfa?
A relációs algebrai kifejezések gráf ábrázolása, ahol a levél csúcsok a relációk, a belső (nem levél) csúcsok pedig a relációs algebrai műveletek.
Milyen költségmodellt használunk relációs algebrai optimalizálás esetében?
A részkifejezések méretét.
Milyen módszert használ a szabály alapú (relációs) optimalizáció?
Ekvivalencia szabályok alapján alakítja át a kifejezésfát (pl. műveletek felcserélése).
Miért mondjuk, hogy az eljárás heurisztikus relációs algebrai optimalizálás esetén?
Mert nem a relációk valódi méretével számol, hanem becslésekkel és általános szabályokkal (pl. szelekció méretcsökkentő hatása).
Miért nem egyértelmű az eredmény relációs algebrai optimalizálás esetén?
Mert az átalakítások sorrendje nem kötött, az eredmény nem determinisztikus.
A relációs algebrai kifejezésfában melyek az unáris csúcsok?
Amelyeknek egy gyereke van: kiválasztás (σ), vetítés (π), átnevezés (ρ).
A relációs algebrai kifejezésfában melyek a bináris csúcsok?
Amelyeknek két gyereke van: különbség (-), unió (U), Descartes-szorzat (X), összekapcsolás.
A relációs algebrai kifejezésfában mik a levélcsúcsok?
Relációk vagy konstans relációk.
Mik azok a relációs algebrai ekvivalencia szabályok?
Olyan állítások, amelyek két relációs algebrai kifejezés ekvivalenciáját fogalmazzák meg (pl. kommutativitás, asszociativitás), azaz E1 ≅ E2.
Miért érdemes hamarabb szelektálni relációs algebrai optimalizálás esetén?
Hogy a részkifejezések várhatóan kisebb relációk legyenek (a szigorúbb kiválasztásokkal csökken az adatmennyiség a további műveletekhez).
Miért érdemes természetes összekapcsolásokat képezni szorzások helyett relációs algebrai optimalizálás esetén?
Mert a szorzás (Descartes-szorzat) utáni kiválasztásnál hatékonyabban kiszámolható a közvetlen összekapcsolás (pl. join algoritmusokkal).
Miért érdemes az unáris műveletek összevonni relációs algebrai optimalizálás esetén?
Hogy csökkenjen a műveletek száma (pl. egymás utáni kiválasztások vagy vetítések összevonása egy műveletté).
Miért érdemes a közös részkifejezéseket megkeresni relációs algebrai optimalizálás esetén?
Hogy ezeket elég legyen csak egyszer kiszámolni a kifejezés kiértékelése során.
Hogyan néz ki a bal-mély összekapcsolási fa?
A fa minden belső csúcsának (összekapcsolásnak) a jobb oldali gyereke egy levél (alaptábla).
Hogyan néz ki a bozótszerű összekapcsolási fa?
A fa belső csúcsainak mindkét gyereke lehet részfa (másik összekapcsolás eredménye), nem csak levél.
Milyen típusú összekapcsolási fákat érdemes vizsgálni?
A bal-mély fákat, mert így csökken a lehetséges esetek száma és elkerülhető a köztes relációk lemezre írása (pipeline).
Mit nevezünk az adatbázisban tranzakciónak?
Egy logikai egységbe tartozó, olvasás és írás műveletekből álló utasítás sorozatot, amelynek van kezdete és vége.
Mi az ACID betűszó egyes betűinek a jelentése?
Atomicity (Atomosság), Consistency (Konzisztencia), Isolation (Elkülönítés), Durability (Tartósság).
Mit jelent a tranzakció ACID-ból az A-hoz tartozó tulajdonsága?
Atomosság: A tranzakció „mindent vagy semmit" jellegű végrehajtása; vagy teljesen végrehajtódik, vagy egyáltalán nem (hiba esetén visszaáll).
Mit jelent a tranzakció ACID-ból az C-hez tartozó tulajdonsága?
Konzisztencia: A tranzakciónak meg kell őriznie az adatbázis konzisztenciáját (az adatbázis megszorításainak a tranzakció után is teljesülniük kell).
Mit jelent a tranzakció ACID-ból az I-hez tartozó tulajdonsága?
Izoláció (Elkülönítés): Minden tranzakciónak látszólag úgy kell lefutnia, mintha egyedül lenne az adatbázisban (egymás után futnának).
Mit jelent a tranzakció ACID-ból az D-hez tartozó tulajdonsága?
Tartósság: Ha egy tranzakció sikeresen befejeződött (commit), hatása nem veszhet el (még rendszerhiba esetén sem).
A tranzakciók melyik tulajdonságát biztosítja a naplózás?
Az atomosságot és a tartósságot.
A tranzakciók melyik tulajdonságát biztosítja a konkurenciakezelés?
Az izolációt (elkülönítést).
Milyen típusú hibák fordulhatnak elő?
Hibás adatbevitel, Készülékhibák (media failure), Katasztrofális hibák, Rendszerhibák (pl. áramkimaradás).
Mit tekinthetünk adatbáziselemnek?
Relációt, rekordot vagy blokkot (a naplózásnál a blokk a legcélszerűbb).
A tranzakció és az adatbázis kölcsönhatásának milyen három fontos helyszíne van?
1. Lemezblokkok területe (háttértár), 2. Pufferkezelő memóriaterülete (pufferkészlet), 3. Tranzakció memóriaterülete (lokális változók).
Mit jelent az INPUT(X) művelet?
Az X adatbáziselemet tartalmazó lemezblokk másolását a lemezről a pufferkészletbe.
Mit jelent az OUTPUT(X) művelet?
Az X adatbáziselemet tartalmazó pufferblokk másolását a pufferkészletből a lemezre.
Mit jelent a READ(X,t) művelet?
Az X adatbáziselem bemásolását a pufferkészletből a tranzakció t lokális változójába.
Mit jelent a WRITE(X,t) művelet?
A t lokális változó tartalmának írását az X adatbáziselem pufferkészletben lévő másolatába.
Miből áll a napló?
Naplóbejegyzések sorozatából (amelyek az adatbázis módosításait és tranzakciók állapotait rögzítik).
Milyen naplózási megközelítéseket ismerünk?
Semmiségi (UNDO), Helyrehozó (REDO), és Semmiségi/Helyrehozó (UNDO/REDO) naplózást.
Mi az UNDO naplózás hátránya?
A módosított adatokat a tranzakció befejezése (commit) előtt/közben azonnal a lemezre kell írni, ami növeli a lemezműveletek számát.
Mi a REDO naplózás hátránya?
Minden módosított adatbáziselemet a pufferben kell tartani a tranzakció teljes befejezéséig (commit), ami növeli a pufferigényt.
Mit jelent a WAL elv?
Write-Ahead Logging: Előbb naplózunk, utána módosítunk a lemezen. A módosítást leíró naplóbejegyzésnek előbb kell lemezre kerülnie, mint magának az adatblokknak.
Milyen naplózást használ az Oracle?
Az UNDO és a REDO naplózás egy speciális keverékét (redo log + rollback szegmensek).
Mi a különbség az ARCHIVELOG és NOARCHIVELOG működés között?
ARCHIVELOG módban a betelt online naplófájlokról másolat (archívum) készül, lehetővé téve a teljes visszaállítást. NOARCHIVELOG módban a betelt naplók felülíródnak archiválás nélkül.
Mik azok a rollback szegmensek az Oracle adatbázisban?
Olyan speciális adatszegmensek, amelyek a tranzakciók által módosított adatok régi értékeit (UNDO információ) tárolják a visszagörgetéshez és olvasási konzisztenciához.
Mit jelent a naplózás naplózása?
Mivel a rollback szegmensek is az adatbázis részei, a bennük történő módosításokról is készül bejegyzés a REDO naplóban.
Milyen két típusa van az adatbázis mentésének?
Teljes mentés (full dump) és Növekményes mentés (incremental dump).
Mit hívunk ütemezésnek?
Egy vagy több tranzakció által végrehajtott lényeges műveletek időrendben vett sorozatát.
Mit hívunk soros ütemezésnek?
Olyan ütemezést, ahol a tranzakciók egymás után hajtódnak végre (nincs átlapolódás a műveleteik között).
Mi a soros ütemezés hátránya?
A tranzakcióknak egymásra kell várniuk, így nem használható ki a hardveres párhuzamosság (multi-core CPU), lassabb a rendszer.
Mikor konfliktus-ekvivalens két ütemezés?
Ha szomszédos, nem konfliktusban álló műveletek felcserélésével az egyik átalakítható a másikká.
Milyen két megközelítése van az ütemezések sorbarendezhetőségének az elérésére?
Passzív módszer: Hagyjuk a rendszert működni, csak ellenőrizzük az ütemezéseket (pl. megelőzési gráf tárolásával). Ha kör alakul ki (nem sorbarendezhető), beavatkozunk.
Aktív módszer: Az ütemező beavatkozik és eleve megakadályozza, hogy nem sorbarendezhető ütemezés (kör) alakuljon ki (a rendszerek többsége ezt használja)
Az aktív módszer milyen eszközöket használhat a sorbarendezhetőség elérésére?
Zárakat, Időbélyegeket, és Érvényesítést.
Mi az a holtpont?
Olyan állapot, amikor két vagy több tranzakció egymásra vár (pl. zárak miatt), és egyik sem tud tovább lépni (ciklus a várakozási gráfban).
Milyen két megközelítése van a holtpont kezelésének?
Holtpont megelőzése (Pesszimista): Szigorú szabályokkal (pl. minden zárat előre elkérni, vagy azonnali abortálás ütközéskor) megakadályozzuk, hogy holtpont alakulhasson ki. Nem igényel várakozási gráfot .
Holtpont felismerése és megszüntetése (Optimista): Engedjük a várakozást, de időközönként ellenőrizzük a várakozási gráfot. Ha kört találunk, az egyik tranzakciót (áldozat) abortáljuk.
Mit jelent az éhezés a tranzakciók esetén?
Amikor egy tranzakció hosszú ideig vagy soha nem jut hozzá a szükséges erőforrásokhoz (pl. zárakhoz), mert más tranzakciók folyamatosan megelőzik.
Milyen típusú zárakat használunk többmódú zárolás esetén?
Osztott zár (S - Shared): Olvasáshoz, többen is birtokolhatják egyszerre.
Kizárólagos zár (X - Exclusive): Íráshoz, csak egy tranzakció birtokolhatja.
Módosítási zár (U - Update): Olvasásra jogosít, de jelzi a későbbi írási szándékot (felminősítési holtpont elkerülésére).
Növelési zár (I - Increment): Csak növelési művelethez (pl. A = A + c), nem enged olvasást/írást.
Hierarchikus zárak: IS (Intention Shared), IX (Intention Exclusive), SIX (Shared + Intention Exclusive).
Milyen elemeit zárolhatjuk az adatbázisnak többféle szemcsézettségű zárral?
Adatbázis
Tábla (Reláció)
Blokk (Lap)
Sor (Rekord)
Oszlop (Mező) - ritkán használt
Mi az a nem ismételhető olvasás?
Amikor egy tranzakció ugyanazt az adatot kétszer olvassa, de a két olvasás között egy másik tranzakció módosítja az adatot, így a második olvasás más értéket ad.
Mik azok a fantom sorok?
Olyan sorok, amelyek egy tranzakció során egy lekérdezés ismételt végrehajtásakor „megjelennek", mert időközben egy másik tranzakció beszúrta őket.
Milyen optimista módjai vannak a sorbarendezhetőség elérésének?
Időbélyegzés: Minden tranzakció és adatelem időbélyeget kap. Ha a műveletek időrendje sérül (pl. későbbi tranzakció írt már), a tranzakciót újraindítjuk.
Érvényesítés (Validation): A tranzakciók szabadon futnak, majd a véglegesítés előtt egy validációs fázisban ellenőrizzük, hogy ütköztek-e mással. Ha igen, újraindítjuk őket .