Kivonatolás a DBMS-ben: statikus és dinamikus kivonatolási technikák

⚡ Okos összefoglaló

A DBMS-ben a hashelés egy olyan technika, amely közvetlenül a kulcsából számítja ki egy rekord lemezhelyét, indexbejárás nélkül. A hash függvény a keresési kulcsokat adattárolókhoz rendeli, és a statikus vagy dinamikus hashelés kezeli ezeknek a tárolóknak a növekedését.

  • Alapötlet: Egy hash függvény egy kulcsot vödörcímmé alakít, így a rekord egy lépésben megtalálható, nem pedig indexbejárással.
  • 🪣 Adattároló: A memóriahely, vagy tárolási egység, ahová az azonos hash-sel rendelkező rekordok kerülnek.
  • 📌 Statikus hashelési módszer: A vödörszám rögzített, így egy adott kulcs mindig ugyanarra a címre van leképezve.
  • 📈 Dinamikus hashelési módszer: A vödrök igény szerint adhatók hozzá és távolíthatók el az adatmennyiség változásával.
  • 💥 Ütközés: Két kulcs térképping ugyanabba a vödörbe, szondázással, újrafeldolgozással vagy láncolással megoldva.
  • 🔍 Legjobb: Pontos egyezésű keresések a keresőkulcson, ahol a hashelés megelőzi a rendezett indexelést.
  • 📊 Kompromisszum: Rendezett indexelési győzelmek tartománylekérdezéseknél; hashelési győzelmek konstans beszúrásoknál és pontkereséseknél.

Statikus és dinamikus hashelési módszer a DBMS-ben

Mi az a kivonatolás a DBMS-ben?

Az adatbázis-kezelő rendszerekben a hashelés egy olyan technika, amely lehetővé teszi a kívánt adatok helyének közvetlen keresését a lemezen indexstruktúra használata nélkül. A hashelési módszert az adatbázisban lévő elemek indexelésére és lekérésére használják, mivel gyorsabb egy adott elemet a rövidebb hashelt kulcs használatával keresni az eredeti érték helyett. Az adatokat adatblokkok formájában tárolják, amelyek címét hash függvény alkalmazásával generálják; a memóriahely, ahol ezeket a rekordokat tárolják, az úgynevezett adatblokk vagy adatgyűjtő.

Miért van szükségünk hashelésre?

Íme néhány helyzet egy adatbázis-kezelő rendszerben, amikor alkalmazni kell a hashelési módszert:

  • Egy hatalmas adatbázis-struktúra esetén nehéz az összes indexértéket az összes szinten átkeresni, majd elérni a céladatblokkot a kívánt adatok megszerzéséhez.
  • A hashelést az adatbázis elemeinek indexelésére és lekérésére használják, mivel egy adott elem keresése gyorsabb a rövidebb hashelt kulcs használatával, mint az eredeti értékkel.
  • A hashelés ideális módszer az adatrekord lemezen való közvetlen helyének kiszámítására indexstruktúra használata nélkül.
  • Hasznos technika a szótárak megvalósításához is.

Fontos terminológiák a hashingban

Íme a hashelés során használt fontos terminológiák:

  • Adattároló: Az adattárolók olyan memóriahelyek, ahol a rekordokat tárolják. Tárolási egységnek is nevezik.
  • Kulcs: a DBMS kulcs egy attribútum vagy attribútumok halmaza, amely segít azonosítani egy sort (tuple-t) egy relációban (táblában).
  • Hash függvény: egy térképping függvény, amely a keresési kulcsok összes halmazát ahhoz a címhez rendeli, ahol a tényleges rekordok találhatók.
  • Lineáris mérés: fix intervallum a próbák között. Ebben a módszerben a következő elérhető adatblokkot használják az új rekord bevitelére a régebbi rekord felülírása helyett.
  • Másodfokú próba: segít meghatározni az új vödörcímet egy kvadratikus polinom egymást követő kimenetének hozzáadásával az eredeti számítás által adott kezdőértékhez.
  • Hash index: az adatblokk címe. Egy hash függvény lehet egyszerű matematikai függvény vagy összetett függvény.
  • Double Kivonatolás: egy hash táblákban használt módszer az ütközések feloldására egy második hash függvény alkalmazásával.
  • Vödör túlcsordulás: A vödör túlcsordulás állapotát ütközésnek nevezzük. Ez végzetes állapot bármely statikus hash függvény számára.

A kivonatolási technikák típusai

A DBMS-ben főként kétféle hashelési technika létezik:

  1. Statikus kivonatolás
  2. Dinamikus hashelés

A kettő főként abban különbözik, hogy a vödrök száma rögzített-e, amint azt a következő két szakasz kifejti.

Statikus kivonatolás

Statikus hashelés esetén az eredményül kapott adattároló címe mindig ugyanaz marad.

Tehát, ha generálsz egy címet, mondjuk, Diák_azonosító = 10 a hash függvény használata mod(3), az eredményül kapott csoportcím mindig ez lesz 1Tehát nem fogsz semmilyen változást látni a vödör címében.

Ezért a statikus hashelési módszerben a memóriában lévő adatvödrök száma mindig állandó marad.

Statikus hash-függvények

  • Rekord beszúrása: Amikor egy új rekordot kell beszúrni a táblázatba, a hash kulcs segítségével generálunk hozzá egy címet. A cím generálása után a rekord ezen a helyen tárolódik.
  • Keresés: Amikor le kell kérni a rekordot, ugyanazt a hash függvényt kell használni az adatok tárolására szolgáló vödör címének lekéréséhez.
  • Rekord törlése: A hash függvény használatával először beolvassuk a törölni kívánt rekordot, majd eltávolítjuk a rekordot a memóriában található címről.

A statikus hashelést tovább osztják:

  1. Nyissa meg a kivonatolást
  2. Zárt hasheléssel

Nyissa meg a kivonatolást

A nyílt hashelési módszerben a régebbi rekord felülírása helyett a következő elérhető adatblokkot használják az új rekord beviteléhez. Ez a módszer lineáris próbaként is ismert.

Például az A2 egy új rekord, amelyet be szeretne szúrni. A hash függvény a 222-es címet generálja, de ezt már egy másik érték foglalja el. Ezért a rendszer a következő adattárolót, az 501-et keresi, és hozzárendeli az A2-t.

Hogyan működik a nyílt hashelés lineáris vizsgálattal?
Hogyan működik az Open Hash

Zárt hasheléssel

A zárt hashelési módszerben, amikor a vödrök megtelnek, egy új vödröt foglalnak le ugyanahhoz a hashhez, és az eredményt az előző után linkelik.

Dinamikus hashelés

A dinamikus hashelési módszer egy olyan mechanizmust kínál, amelyben az adattárolók dinamikusan és igény szerint adhatók hozzá és távolíthatók el. Ebben a hashelési módszerben a hash függvény segít nagyszámú érték létrehozásában, és a struktúra az adatokkal együtt növekszik vagy zsugorodik. Ezáltal jól illeszkedik azokhoz a táblázatokhoz, amelyek mérete előre nem jelezhető előre, ahol a statikus hashelési módszer vagy helyet pazarolna, vagy túlcsordulna.

Különbség a rendezett indexelés és a hashelés között

Az alábbiakban a hashelési és indexelési műveletek közötti főbb különbségeket ismertetjük:

paraméterek Rendezett indexelés hashelés
Cím tárolása A memóriában lévő címek egy kulcsérték, az úgynevezett elsődleges kulcs szerint vannak rendezve. A címek mindig a kulcsérték hash függvényével jönnek létre.
Teljesítmény Az adatmennyiség növekedésével csökkenhet, mivel az adatok rendezve tárolódnak, és minden beszúrás, törlés vagy frissítés átrendezi azokat. A teljesítmény folyamatos adatbevitellel és -törléssel érhető el. Egy hatalmas adatbázis esetében a hash fájlok karbantartása költségesebbé válik.
Használ Tartománylekéréshez előnyös, ahol egy adott tartományra vonatkozóan kérik le az adatokat. Ideális egy adott rekord lekérésére a keresési kulcs alapján, és csak akkor teljesít jól, ha a hash függvény a keresési kulcson van.
Memóriakezelés Sok fel nem használt adatblokk törlési és frissítési műveletekből származik, és nem adhatók fel újrafelhasználásra, ezért rendszeres karbantartásra van szükség. Statikus és dinamikus hashelés esetén a memóriát mindig kezelik, és a vödör túlcsordulást kezelik a statikus hashelés kiterjesztése érdekében.

Röviden, válasszon rendezett Indexelés tartománylekérdezésekhez és hasheléshez a kulcs pontos egyezésű kereséseihez.

Mi az ütközés?

A hash ütközés olyan állapot, amelyben az adathalmaz két vagy több eleméből származó hashek helytelenül ugyanarra a helyre kerülnek leképezésre az adathalmazban. hash asztal.

Hogyan kezeljünk egy hashelési ütközést

Kétféle technikát alkalmazhatsz a hash ütközések elkerülésére:

  1. Újragondolva: Ez a metódus egy másodlagos hash függvényt hív meg, amelyet folyamatosan alkalmaznak, amíg nem találnak egy üres helyet, ahová egy rekordot el lehet helyezni.
  2. Láncolás: A láncolási metódus egy láncolt listát hoz létre azokból az elemekből, amelyek kulcsai ugyanarra az értékre hash-elődnek. Ez a metódus minden táblapozícióban egy extra link mezőt igényel.

GYIK

A statikus hasheléssel rögzített számú tárolóegységet lehet használni, így az adatmennyiség növekedésével túlcsordulhat. A dinamikus hasheléssel igény szerint adunk hozzá és távolítunk el tárolóegységeket, így teljes újraépítés nélkül alkalmazkodik a változó adatmérethez.

Tartománylekérdezések esetén. A hashelés szétszórja a kulcsokat a tárolók között, így egy „between” vagy „more-than” lekérdezés nem tudja sorrendben követni őket. Egy rendezett index rendezve tartja a kulcsokat, és jobban illeszkedik oda.

Egy vödör túlcsordul, ha több rekord hashelés útján érkezik hozzá, mint amennyit tárolni tud. Statikus hashelés esetén ez gyakori az adatmennyiség növekedésével, és nyílt címzéssel, láncolással vagy túlcsorduló vödrökkel kezelik.

A mesterséges intelligencia rendszerek hashelést használnak a gyors jellemzőkereséshez és a hashelési trükkhöz, amely a nagy kardinalitású kategóriákat egy fix vektorba képezi le. A hasonlósági hashelés a közel ismétlődő rekordokat is hatékonyan csoportosítja.

Az újrahasítás egy második függvény segítségével egy másik üres helyet talál ugyanabban a táblázatban. A láncolás folyamatosan ütközteti a rekordokat a vödörhöz csatolt láncolt listában, így maga a tábla soha nem tölti ki kétszer ugyanazt a helyet.

Foglald össze ezt a bejegyzést a következőképpen: