Manipulace s databází


Většina systémů Unix má standardní knihovny nazvané DBM. Tato knihovna poskytuje základní utility pro práci s databází a umožňuje programům ukládat data ve tvaru klíč hodnota na disk do souboru. Jde o trvalé soubory na disku, které je možné opravovat a rozšiřovat (přidat nový záznam, opravit existující záznam nebo záznam zrušit). DBM knihovna je jednoduchá a snadno přístupná, proto ji využívají takové programy jako je např. Berkeley sendmail.

Přístup do databáze je pomocí asociativního pole, které se databázi přiřadí při jejím otevírání. Toto asociativní pole (nazývané DBM pole) je poté používané pro přístup do databáze a její modifikaci. Vytvoření nového prvku pole okamžitě modifikuje databázi. Zrušení prvku pole okamžitě zruží záznam v databázi.

Velikost, počet a druh klíčů a hodnot v DBM databázi je omezený a DBM pole má stejná omezení. Viz. libdbm. Pokud však budete používat klíče i hodnoty do 1000 libovolných binárních znaků budete bez problémů.

Otevření a zavření DBM pole

K propojení DBM databáze a DBM pole použijte příkaz dbmopen(), který má tento tvar:
dbmopen(%POLE,"dbmsoubor",$mod);
Kde: Příklad:
dbmopen(%JMENA,"mojejmena",0644);
Spojí asociativní pole %JMENA s diskovými soubory mojejmena.dir a mojejmena.pag v aktuálním adresáři. Pokud soubory neexistují, vytvoří je s přístupovým módem 0644.

Příkaz vrací výsledkový kód 1, pokud se podaří databázi otevřít nebo vytvořit.Příklad:

dbmopen(%ABC,"/etc/abc",undef) || die "nelze otevrit databaze /etc/abc";
Databáze se uzavře příkazem dbmclose(%POLE), podobně 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
}
dbmclose (%JMENA);


Předchozí kapitola | Obsah