abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:44 | Nová verze

    Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.

    Ladislav Hagara | Komentářů: 0
    včera 02:11 | Komunita

    Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.

    Ladislav Hagara | Komentářů: 17
    včera 02:00 | Nová verze

    Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.12. 18:33 | Nová verze

    Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    23.12. 13:55 | Nová verze

    Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 0
    23.12. 12:44 | Nová verze

    Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.

    Ladislav Hagara | Komentářů: 0
    22.12. 23:44 | Nová verze

    Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.

    Ladislav Hagara | Komentářů: 0
    21.12. 05:00 | Nová verze

    Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 2
    21.12. 01:55 | Nová verze

    GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 0
    19.12. 17:22 | IT novinky

    Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.

    Ladislav Hagara | Komentářů: 14
    Kdo vám letos nadělí dárek?
     (33%)
     (2%)
     (11%)
     (2%)
     (1%)
     (2%)
     (15%)
     (19%)
     (14%)
    Celkem 85 hlasů
     Komentářů: 18, poslední včera 15:30
    Rozcestník

    Dotaz: postgresql - optimisticke transakce

    9.7.2007 15:30 jenda
    postgresql - optimisticke transakce
    Přečteno: 542×
    rad bych mel potvrzeno, jestli je mozno pouzivat v postgresql transakce v optimistickem modu. Jestlize je tomu tak, pak bych se rad dovedel, jaky je doporuceny zpusob jak se osetruji kolize, resp. jak je to v praxi obvykle.

    Pouzuivaji se zamky na recordy nebo se to nevyplati a zamykaji se tabulky. Existuje nejaka moznost transakce znova rozbehnout od nejakeho mista v programu. Existuji nejake takove 'checkpointy'. Predem dekuji za podnety a navrhy zrovna tak jako za linky k uvedene problematice.

    p.s. rozhodujeme se mezu fb nebo pgsql

    Odpovědi

    AraxoN avatar 9.7.2007 16:07 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    9.7.2007 16:52 jenda
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    hm, tady by nam musel nekdo znaly pomoci, ja jsem byl toho nazoru, ze 'transaction isolation' nema s tim optimistic/pesimistic nic spolecneho. Nad tim savepointem se musim jeste zamyslet, diky.
    okbob avatar 9.7.2007 17:13 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    Optimisticky mod je vicemene jediny a implicitni. Zamky jsou zakladni brzdou databaze, takze se pokud mozno nepouzivaji. Proto ma taky PostgreSQL (stejne jako Firebird) tzv. multigeneracni architekturu, coz tedy neznamena, ze zamky neexistuji (jak na radcich, tak na tabulkach, pripadne databazi). Pokud si je ale nevynucuje uloha, tak se nepouzivaji. Jestli jste drive delali s Foxkou nebo necim podobnym, tak se snazte na vsechno co nejdrive zapomenout. SQL databaze se chovaji jinak.

    http://www.postgresql.org/files/developer/transactions.pdf
    http://www.sai.msu.su/~megera/postgres/gist/papers/concurrency/concurrency.pdf Pavel
    9.7.2007 18:38 jenda
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    Pokud si je ale nevynucuje uloha, tak se nepouzivaji.

    ja si nedokazu predstavit, ktere jsou to aplikace, ktere to nevynucuji. Schematicky napr:

    ... - SELECT (...na neco .., precteno do lokalnik promenych..)

    - zpracovani lokalnich promenych ...

    - podle situace UPDATE nejake z tech radek v tabulce

    - COMMIT

    jestlize toto cini 2 procesy soucasne, tak budto u toho COMMITU, nebo podle databaze uz pri tom UPDATE krici jeden z tech procesu, ze ta transakce nebo ten update neprobehl. To jsem si myslel ze se musi vyskytovat u sebeprimitivnejsi aplikace. A nyni musim reagovat na tu situaci, ze nejaka akce nemohla byt provedena. V tech podkladech co linkujete (a i u jinych na netu) je lapidarne receno, ze je potreba transakci znova nastartovat. Nikde jsem ale nevycetl jak to provest automaticky.
    9.7.2007 18:43 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    "Nikde jsem ale nevycetl jak to provest automaticky."
    Možná se jen hloupě ptám, ale pokud jste 1) odvolal transakci kvůli konfliktu při zápisu nebo commitu a 2) jste autorem dotyčné aplikace, tak snad není problém naprogramovat "try again" (a případně ověřit, zda není třeba interaktivní zásah == změnila se důležitá data, která by způsobila, že transakce by již neměla smysl tak, jak ji chcete provést)? Tohle je až příliš individuální dotaz, než aby Vám na něj mohl zodpovědět kdokoli jiný, než Vy sám.
    9.7.2007 22:49 jenda
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    ...tak snad není problém naprogramovat "try again" ...

    no prave, a ja bych rad vedel, jak to nekdo dela. Napr. jestli si dela ve funkcich nejake znacky a vraci se k nim setjmp-em? Nikdy jsem to totiz v zadnych prikladech nevidel. Ja mam takovy silny pocit, ze aplikace se delaji tak, ze kdyz je nejaka transakce nehotova, tak se predhodi uzivateli, aby nastartoval ten dotaz znova. Coz v mem pripade bohuzel nejde protoze se u batchprocedur musim snazit, aby si aplikace poradila sama.

    Vim, ze se to omezuje tim, ze se pouziji zamky, ale jak pise pan Stehule, ty v aplikaci nevidime radi. Ale je to patrne jedina cesta, jak omezit ty nedokoncene transakce na ty s tim deadlockem. S tim se samozrejme zit musi, kdyz se to stane 1 x za pul roku, tak si to uzivatele prectou v logfile a 'good is'. Tedy vpodstate ta strategie spociva v zamezeni te situace, abych musel nejakou transakci zacit znovu. A ta otazka znela, je tento nazopr spravny? A ten poddotaz byl, jak to delate Vy ostatni?
    9.7.2007 22:59 outsider
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    A ta otazka znela, je tento nazopr spravny? A ten poddotaz byl, jak to delate Vy ostatni?
    Ano. Presne podle teorie.

    Na tomhle neni moc co vymyslet a zadnou ameriku neobjevite. Bud zamykate a riskujete deadlocky nebo nezamykate, ale musite hlidat konzistenci (no, musite :-) ) a dostanete se do stavu, kdy to uzivatel musi zadat znovu... Co je vyhodnejsi ale zavisi na logice vasi aplikace a neexistuje zadna obecna rada, co je lepsi!
    9.7.2007 23:09 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    Uvedu příklad: Uživatel zadá změnu v nějakém řádku - třebas jen jedno číslo v jednom sloupečku. Před commitem zjistím, že to nemůžu potvrdit nebo zapsat, protože došlo paralelně ke změně. Nu tak to odvolám a zkontroluju, jestli se nezměnila data kritická pro tuhle změnu. Jestli někdo panu X změnil nebo nezměnil ulici a číslo domu mne příliš nezajímá, pokud mu měním fotku v databázi. Pokud mi někdo změnil pod rukou pole, které uživatel právě zadal, asi by měl na to být upozorněn, pokud nový údaj zadal na základě starého a již neplatného.

    Nevím, co řešit v dávkách. Buď se mi "pod rukou" (ale pod ochranou MVCC) změnilo něco, z čeho dokážu novou transakci přepočítat (u přípisů na účtu je to jednoduché, že? Prostě těch 13547 Kč připočtu k nové hodnotě místo k původní) nebo to přepočítat nedokážu a je to závažný stav a ten nějak oznámím - mailem správci, třeba? Nemáte podrobnější příklad?
    10.7.2007 00:02 jenda
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    ono je to takhle. Ten system, pro ktery se snazim verifikovat tu pgsql je firemni informacni system ve kterem pracuji neustale na pozadi desitky programu, ktere neustale zjistuji stavy na skladech, aktuani dodavky, postupy prace, stav vyroby a neustale optimalizuji vyrobu a objednavky. Mezitim pracuji (pres den) samozrejme interaktivne uzivatele. Napr. tabulky vyrobnich zakazek jsou jaksi neustale 'pod tlakem', nebot se podle toho, co si prave mysli simulace rozkladaji na subzakazky, meni se jejich cas a jednotlive vyrobni prikazy meni svuj stroj, cas naplanovani, mnozstvi a pod.

    Neco takoveho nelze samozrejme programovat jako obvykle projekty pro banku, kde si sednou desitky programatoru na 2 roky do kamrliku a potej s kazdym sql-statementem a kdyz si nevedi rady, tak vydaj hlasku, ze si ma neco nastartovat uzivatel znova. Tady se na to slo s frameworkem, ktery generuje ty sql-statements sam na zaklade vlastniho jazyka a aby byl ten system menitelny, je to cele rozdeleno do mnozstvi minimodulu, ktere nejaky generator sesumiruje dohromady.

    Aplikacni programator tedy nejake SELECTy vubec nevidi, ty zna jen ten generator a proto si nemuze nad kazdou libovolnou kombinaci tech modulu zamyslet, co udelat, kdyz ta transakce nahodou nevyjde. To musi udelat ten system sam. Programm je z poloviny 90 tych let s nejakou zvlastni databazi od Siemense. Ta databaze (nebo ten framework , to nevim) si vede vlastni checkpointy a a dokaze transakce opakovat ze se to rozbehne od toho checkpointu znova. Bylo mi receno, ze je to neco podobneho jako ta slavna NonstopSQL od firmy tandem.

    No a ja se snazim nyni tak trochu osahat pudu , zda by se nedala nejaka rychla rekneme 'uprimne' levna databaze k tomu pouzit. Proto jsem tak trochu naslepu vypalil a doufal, ze se nekdo s nejakou takovou problematikou uz setkal - nahoda je vul :-)
    okbob avatar 10.7.2007 10:02 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    je to trochu jinak. v podstate nikdy nejste schopny sam detekovat nekonzistenci. Nezalezi ani tak jak druha session zmenila data, ale kdy druha session potvrdi (commit) zmenena data. V ten okamzik uz se necha detekovat kolize. A stejne tak u vas, dokud nedate commit, tak neni jasnem jestli dojde ke kolizi nebo ne (protoze jste samozrejme mohl dat rollback). Proto je detekce kolizi vyhradne zalezitosti systemu. V podstate by se mela vetsina transakci, kde hrozi riziko kolize psat do cyklu:
      for (i=1,10,i++)
      {
        BEGIN
          SET TRANSACTION SERIALIZABLE
          SELECT INTO ... 
          UPDATE ...
        try
        {
           COMMIT
        }
        catch 
        {
           continue;
        }
        break;
      }
    
    okbob avatar 10.7.2007 09:47 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
    Je dost pripadu, kdy vam staci UPDATE t SET c = c +/- konstanta a pak zadne zamky nepotrebujete. Pokud nutne potrebuji data do lokalnich promennych, pak musim uz pouzit radkovy zamek
    BEGIN
      SELECT .... FROM FOR UPDATE;
      ....
      UPDATE ...
    COMMIT
    

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.