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