Módosítások naplózása a táblaobjektumokban

Dr. Vermes Mátyás1

2003. április 10.

1.  Áttekintés
2.  Környezeti változók
3.  Teljesítmény
4.  A naplózás korlátai
5.  A napló hasznosítása
6.  Példa

1.  Áttekintés

A táblaobjektumos adatbáziskezelő naplózással egészült ki. A naplózás érdekében az alkalmazási programokon semmit sem kell változtatni: mindazok a programok képesek a naplózásra, amik naplózást támogató dinamikus táblaobjektum könyvtárral futnak. A táblaobjektum könyvtárak a $CCCDIR/ccctab/common.src-beli 2003.01.07-es javítás óta támogatják a naplózást.

A napló egy XML szintaktikájú szövegfilé, amibe minden adatbázismódosításkor beíródik egy rekord, ami tartalmazza

A naplózás bekapcsolása és paraméterezése környezeti változókkal és konfigurációs filékkel lehetséges.

2.  Környezeti változók

CCC_TRANSACTION_LOG_FILE
Ez a környezeti változó kapcsolja be a naplózást (ha nem üres), egyúttal megadja azt a filéspecifikációt, amibe a napló kerül. A filé nem csak a lokális filérendszerben lehet, hanem pl. NFS-en is.

CCC_TRANSACTION_LOG_CREATE
Ha ennek a környezeti változónak az értéke auto, akkor a naplófilé automatikusan létrejön, ha korábban nem létezett volna. Ellenkező esetben az adatbázis módosítás kísérlete runtime errorhoz vezet.

CCC_TRANSACTION_LOG_MUTEX
Ez egy olyan filé specifikációja, amit a naplózó rendszer mutexnek használ, azaz lockolva tart azalatt, amíg valamelyik program éppen írja a naplót. Ha nincs megadva, akkor a CCC_TRANSACTION_LOG_FILE-ban megadott filé lesz a mutex. Külön mutex megadása akkor szükséges, ha a naplót olyan filérendszeren vezetjük, ami nem támogatja a lockot.

CCC_TRANSACTION_LOG_TABLES
Egy szövegfilé specifikációja, ami a naplózandó filék aliasait tartalmazza (egyszerű felsorolás). Ha nincs megadva, akkor a naplózás hatálya minden filére kiterjed.

3.  Teljesítmény

A totális (minden filére kiterjedő) naplózás által okozott lassulás kb. 30-100%, attól függően, hogy a napló írásához szükséges sorbaállítás mennyire akadályozza a munkát. A felhasználók növekvő száma nyilván növeli a sorbaállításkor fellépő várakozási időt. Ugyanakkor a sok egyidejű írási művelet eleve (naplózás nélkül is) lassú, ezért nem kell nagyobb relatív lassulásra számítani.

4.  A naplózás korlátai

Minden módosítás naplózásra kerül, ami a tabCommit() függvényen keresztül íródik ki. Így a különféle importok is benne lesznek a naplóban.

Nincs benne a naplóban a tabZap() és tabPack() által végzett módosítás.

Külön kiemelendő, hogy a filék törlésével, bemásolásával, átnevezésével okozott változások nincsenek (nem is lehetnek) benne a naplóban.

5.  A napló hasznosítása

Jelenleg a naplót csak arra lehet használni, hogy text editorral keresgéljünk benne.

Viszonylag kevés munkával írható volna olyan program, ami egyes adattáblák mentett állapotából kiindulva, a naplóban rögzített változások újbóli végrehajtásával rekonstruálni tudná a tábla aktuális állapotát. Ez az eljárás alkalmas sérült táblák helyreállítására.

Ugyanez a technika alkalmazható volna egyes fontos adattáblák realtime replikálására egy másik számítógépen.

6.  Példa

Az alábbi rövid naplórészlet rögzítí a Kontóba való belépés, a KDIRDD elindítása, majd kilépés mozzanatait.

<update><prg>setpass</prg><pid>3001</pid>
<time>2003041013:04:47</time>
<table><alias>USER</alias><path>USER.DAT</path><rec>415</rec></table>
<f><n>CHANGED</n><b>20030408</b><a>20030410</a></f>
</update>
<append><prg>executiv.exe</prg><pid>3004</pid>
<time>2003041013:04:53</time>
<table><alias>NAPLO</alias><path>NAPLO.DAT</path><rec>195014</rec></table>
<f><n>MODULE</n><v>KDIRDD.EXE</v></f>
<f><n>USER</n><v>m</v></f>
<f><n>START</n><v>13:04:53</v></f>
<f><n>DATUM</n><v>20030410</v></f>
</append>
<update><prg>kdirdd.exe</prg><pid>3009</pid>
<time>2003041013:04:56</time>
<table><alias>NAPLO</alias><path>NAPLO.DAT</path><rec>195014</rec></table>
<f><n>STOP</n><b></b><a>13:04:56</a></f>
</update>

A naplózás odafigyelést igényel a rendszer üzemeltetőjétől, ui. a napló hamar GB-os méretekre duzzadhat, ügyelni kell tehát az archiválásra, nehogy a lemez beteljen.


Jegyzetek:

1ComFirm BT.


Learn Hungarian in Budapest in Ulysses language school. Group and private courses on affordable prices.