Manipulace s databazi


Vetsina systemu Unix ma standardni knihovny nazvane DBM. tato knihovna poskytuje zakladni utility pro praci s databazi a umuznuje programum ukladat data ve tvaru klic hodnota na disk do souboru. Jde o trvale soubory na disku, ktere je mozne opravovat a rozsirovat (pridat novy zaznam, opravit existujici zaznam nebo zaznam zrusit). DBM knihovna je jednoducha a snadno pristupna, proot ji vyuzivaji takove programy jako je napr. Berkeley sendmail.

Pristup do databaze je pomoci asociativniho pole, ktere se dtabazi priradi pri jejim otevirani. Toto asociativni pole (nazyvane DBM pole) je pote pouzivane pro pristup do databaze a jiji modifikaci. Vytvoreni noveho prvku pole okamzite modifikuje databazi. Zruseni prvku pole okamzite zruzi zaznam v databazi.

Velikost, pocet a druh klicu a hodnot v DBM databazi je omezeny a DBM pole ma stejna omezeni. Viz. libdbm. Pokud vsak budete pouzivat klice i hodnoty do 1000 libovolnych binarnich znaku budete bez problemu.

Otevreni a zavreni DBM pole

K propojeni DBM databaze a DBM pole pouzijte prikaz dbmopen(), ktery ma tento tvar:
dbmopen(%POLE,"dbmsoubor",$mod);
Kde: Priklad:
dbmopen(%JMENA,"mojejmena",0644);
Spoji asociativni pole %JMENA s diskovymi soubory mojejmena.dir a mojejmena.pag v aktualnim adresari. Pokud soubory neexistuji, vytvori je s pristupovym modem 0644.

Prikaz vraci vysledkovy kod 0, pokud se podari databazi otevrit nebo vytvorit.Priklad:

dbmopen(%ABC,"/etc/abc",undef) || die "nelze otevrit databaze /etc/abc";;
Databaze se uzavre prikazem dbmclose(%POLE), podobne jako soubor.
dbmopen(%JMENA,"jmena",0644);

%JMENA=("Alena",10,"Jana",11,"Petr",12);            # naplneni databaze
foreach $klic (keys %JMENA) {                        
        print "$klic ma hodnotu $JMENA{$klic}\n";   # opis databaze
}

$JMENA{"Jana"} = 30;                                # oprava zaznamu v databazi

$JMENA{"Pepa"} = 44;                                # pridani zazanamu do databaze

foreach $klic (keys %JMENA) {                        
        print "$klic ma hodnotu $JMENA{$klic}\n";   # opis databaze
}


Predchozi kapitola | Obsah