A tranzakció fogalma
Minden modern ipari DBMS és az asztali támogatás egy része tranzakciókkal dolgozik. A tranzakciók mechanizmusa sok szempontból fontos. Ebben a kurzusban két szempontból fogjuk megvizsgálni, az adatbázisok integritásának helyreállításának alapjaként, és egy olyan mechanizmus részeként, amely egyszerre működik több felhasználó adataival. De annak érdekében, hogy megértsük a tranzakciók szerepét, rendkívül fontos, hogy az ügyleteket mint olyanokat tekintsük. Először is, adjuk meg a "transzkripció" fogalmát.
Tranzakció - (angol tranzakció) - az adatbázissal folytatott szekvenciális műveletek csoportja, ami logikai adatfeldolgozó egység. A tranzakciót teljes egészében vagy sikeresen végre kell hajtani, az adatok sértetlenségének figyelembevételével és függetlenül attól, hogy a többi tranzakció párhuzamosan zajlik-e, vagy egyáltalán nem teljesül, és ennek semmilyen hatása nem lesz. A tranzakció áthelyezi az adatbázist egy következetes állapotról a másikra.
Vagyis az ügylet, függetlenül a műveletek számától, egyetlen egésznek tekinthető, és akár teljes egészében sikeresen elvégezhető, akár egyáltalán nem teljesíthető, abban az esetben, ha valamely művelet nem működik. Ha a tranzakció sikeres, akkor a tranzakció rögzítve van, a művelet végrehajtása történik. Meghibásodás esetén a már végrehajtott műveleteket törölték és a tranzakció ki van kapcsolva, a művelet végrehajtása "visszahúzás" történik.
A tranzakció legnépszerűbb példája, amely segít megérteni lényegét, és rendkívül fontos a bankszámlák közötti pénzátutalások működtetése.
A művelet végrehajtásához szükséges műveletek egyike lehetséges:
1. Ellenőrizze a számla elérhetőségét, amelyről le kell mondania a pénzt, és a pénzeszközök megfelelőségét. Ez egy adatleolvasási művelet, esetleg több táblázatból).
2. Ellenőrizze a fiók elérhetőségét, amelyet jóvá kellene hagynia (például a fiókot zárolni kell, ideiglenesen blokkolni, stb.). Ez egy adatleolvasási művelet is.
3. Csökkentse a forrásszámla egyenlegét. Ez egy adatmódosítási művelet.
4. Növelje az egyenleg értékét a fogadó számlán. Ez egy adatmódosítási művelet.
5. Létre kell hozni a tranzakciónaplóban végrehajtott műveletet. Ez az új rekord létrehozásának mûködése.
Más lehetőségeket javasolhat ehhez a művelethez, de a legfontosabb az, hogy a teljes sorozatot végre kell hajtani, vagy egyik műveletet sem kell végrehajtani. Nyilvánvaló, hogy ha megállunk, mondjuk a 4. lépésben, akkor a forrási fiókból származó pénzek egyszerűen eltűnnek - a "semmibe" kerülnek. Vagyis megsértik az adatok következetességét. Ugyanakkor rendkívül fontos annak biztosítása, hogy a tranzakció során semmilyen más tranzakciót ne lehessen végrehajtani az abban részt vevő számlákkal. Azokban az esetekben ?? e, ha miután megnéztük van elegendő pénz a számlára, a forrás, az alapok terhére azt egy újabb művelet - mi hamarosan újra ?? teljesen találkozását károsodott összhang.
Természetesen, a tranzakció támogatási mechanizmus legyen technikailag nagyon nehéz - ha több tucat vagy több száz felhasználó ?? s, és több ezer hivatkozások az adatok függetlenségének biztosítására ezeket a hivatkozásokat egymással, és arra, hogy vonja vissza, és visszaállítani az adatbázist az eredeti állapotába, nem könnyű. A mechanizmus végrehajtásához különböző mechanizmusok alkalmazhatók, de vannak olyan tulajdonságok, amelyeknek a tranzakcióknak és a támogató rendszernek rendelkezniük kell. Általában az ACID - Atomicity, Consistency, Isolation, Sustainability rövidítést használják ezeknek a tulajdonságoknak a jelölésére. Az orosz fordítás - Atomicitás, konzisztencia, izoláció és hosszú élettartam. Nézzük ezeket a tulajdonságokat részletesebben.
Az atomicitás csak a tranzakció oszthatatlanságát jelenti, és azt a követelményt is, hogy teljes egészében végrehajtsa, vagy egyáltalán nem. Már említettük eléggé e tulajdonság döntő jelentőségét, és nem nagyon fontos, hogy továbbfejlesszük ezt a koncepciót.
A koherencia egy meglehetősen összetett fogalom, amely valamivel szélesebb az adatintegritás fogalmánál. Ha az adatok sértetlenségét - ϶ᴛᴏ teljesítményét Sun ?? ex ebben az adatbázisban integritási kényszerek (vnutrizapisnyh, mezhzapisnyh, idegen kulcs megszorítások, és így tovább), a következetesség is jelenti betartását üzleti szabályok tárol. Különösen a integritási kényszerek követhető tilalmat a negatív számlaegyenleg (azaz a megfelelő attribútum), de például előírja, hogy az összeg terhelése és jóváírása, ha átutalással a számla a számla - ϶ᴛᴏ egy üzleti szabály ĸᴏᴛᴏᴩᴏᴇ at segítsék az integritási korlátokat nem kifejezetten.
Amint már említettük, feltételezzük, hogy a tranzakció az adatbázist egy elfogadott állapotból egy másikba továbbítja, de azt a programozóknak biztosítaniuk kell a műveletek sorrendjét meghatározva. A DBMS szerepe itt annak biztosítása, hogy minden művelet sikeres legyen (vagy egyáltalán nem teljesüljön). Ugyanakkor az átalakítás végrehajtásának folyamata során az adatbázis több koordinálatlan állapoton is áthaladhat (például a fenti példában a pénzátutalás a rendszert a művelet előtt a művelet 3 után nem koordinálja) 4).
Elválasztás - A tranzakció tulajdonsága egymástól függetlenül történik. Vagyis egy tranzakció végrehajtása során mások nem befolyásolhatják végrehajtásának eredményét. A tranzakciók egymástól való tökéletes függetlenségének biztosítása megfelelő erőforrásokat igényel, és hátrányosan befolyásolja az adatműveletek gyorsaságát, ezért több úgynevezett elszigetelési szint van, amelyet később tárgyalunk.
Hosszú élettartam - A tranzakció tulajdonsága a sikeres befejezés után a rendszerben található. Nyilvánvaló, hogy a folyamat az adatbázis merülhetnek fel a hardver hibák, áramkimaradás, egyéb hibák, de garantált, hogy ha egy üzenetet a sikeres tranzakció, változások rá a tárolt adatokat minden esetben, és amikor az állam az adatbázis után helyreáll hibák, ezek a változások nem fognak eltűnni. Természetesen nem arról a esetről beszélünk, amikor az adatbázist, amelyen az adatbázis teljes egészében található, sikertelen, és vissza kellett állítani egy biztonsági másolatból. Bár még ezekben az esetekben is, ahogy később tárgyaljuk, a végrehajtott tranzakciók néha visszaállíthatók.
Most, miután áttekintettük a tranzakció koncepcióját és annak alapvető tulajdonságait, folytathatjuk a tranzakciók használatát a hiba miatti adatbázis-helyreállítást, és több felhasználó párhuzamos működését.