Konkurentni pristup k souborum
Pavel Kolesnikov
pavel.kolesnikov na gmail.com
Sobota Říjen 11 09:49:03 CEST 2008
Opravdu potrebujete zamykani? Co treba takhle:
- pri kazde zmene vytvorit novy soubor a po vytvoreni souboru zaktualizovat
zaznam v databazi, aby ukazoval na novou verzi
- pri smazani pouze smazat zaznam v databazi
- v obou pripadech do nejakeho logu zapsat cestu k predchozi verzi obrazku
- pravidelne asynchronne mazat jiz neplatne verze obrazku
Samozrejme predpokladam, ze ve skutecnosti nicemu nevadi, kdyz si jeden
uzivatel v klidu dotahne soubor zatimco nekdo jiny mezitim ten soubor smazal
Pavel
2008/10/10 Jaroslav Hurdes <java na ataco.cz>:
> Zdravim, resim situaci, ze potrebuji ukladat desitky az stovky GB obrazku,
> ktere maji vazbu na data v databazi. Zatim jsem to mel udelane pres ukladani
> do databaze (BLOB). Toto reseni vyzaduje vykonnejsi databaze napr. Oracle,
> ci DB2. Dalsi moznosti je ukladani dat primo na filesystem a v databazi si
> drzet jenom cesty k souborum, coz znamena mensi zatizeni databaze.
>
> Tady ale poterbuji vyresit soubezny pristup k datum, kdy v jednom okamziku
> muze nekolik klientu cist data a zaroven muze prijit pozadavek na zapis, ci
> odstraneni souboru. Potrebuji vyresit zamykani souboru pri modifikacich, tak
> aby ti co ctou museli pockat, nez se operace ukonci a naopak pokud nekdo jiz
> cte data, tak aby ten co modifikuje pockal, az jsou data prectena a pote se
> provedlo uzamceni a modifikace.
>
> Zatim jsem na to sel pres RandomAccesFile a zamykani pres FileChannel lock()
> a release(). Muze nekdo poradit, zda je to spravna cesta, nebo zda
> neexistuje jiz nejaka knihovana resici tento problem bud jako celek, nebo
> nizkourovnovy pristup k souborum a jejich zamykani .
>
> Diky Jaroslav Hurdes
>
Další informace o konferenci Konference