locking v databazi - vlasni reseni

Karel Zak zakkr na zf.jcu.cz
Pátek Září 13 14:23:05 CEST 2002


On Fri, Sep 13, 2002 at 12:50:45PM +0200, Jan Kubik wrote:
> Nasledujici problem:
> rada soucasne bezicich (databazovych) procesu musi vzajemne koordinovat
> (blokovat) pristup k jednotlivym radkam v tabulkach. Radka je identifikovana
> svym primary-key - tento string je spolu se jmenem tabulky tedy v celem
> systemu jednoznacny. Uvedeny string by se mel predat nyni nejake funkci,
> ktera rozhodne, zda jiz nejaky jiny proces pro danny string provedl uzamceni
> a
> sledovany proces musi byt tedy pozastaven az do doby odemknuti zaznamu.
> Okrajove podminky:
> neni mozne pouzit fcntl nebo lockf nebot samy tabulky - t.zn. jejich ulozeni
> ve fs
> neni znamo
> pouziti centralniho locking procesu bych rad obesel

 Chapu-li to dobre tak chcete delat nejakou vlasni DB pro svou
 aplikaci? Proc nechcete pouzit nejakou existujici DB? K cemu to
 vlastne chcete :-)
 
 - kde mate ty tabulky, na disku nebo v pameti? Nebo oboji?

> Hledal jsem zejmena v oblasti shared memory a semaphore. Nejaka jina zasadni
> cesta??

 IMHO konfortnejsi mohou byt thready.

> Pri nahledu mysql jsem zjistil, ze locking je tam docela objemna zalezitost.
> Musi to tak byt??

 Asi jo kdyz to tak napsali (a ze zamky v teto DB celkem bojuji :-)
 
 Kouknete se na http://www.sleepycat.com/, je tam k mani hotova DB
 vrstava pouzitelna jako knihovna v libovolne aplikaci. Umi to i
 transakce tak tise predpokladam, ze to ma i zamky na u rovni radku.
 Tadle vrstva se pouziva i v nove MySQL.

    Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/
 
 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz


Další informace o konferenci Databases