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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
včera 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 1
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 24
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (8%)
 (5%)
 (3%)
Celkem 785 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: postgresql - optimisticke transakce

9.7.2007 15:30 jenda
postgresql - optimisticke transakce
Přečteno: 414×
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: 45 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: postgresql - optimisticke transakce
A fine is a tax for doing wrong. A tax is a fine for doing well.
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.