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í
×
    13.9. 17:33 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.

    Ladislav Hagara | Komentářů: 0
    13.9. 01:33 | IT novinky

    Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si

    … více »
    Ladislav Hagara | Komentářů: 3
    12.9. 14:00 | Nová verze

    Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.

    Ladislav Hagara | Komentářů: 0
    12.9. 12:00 | Zajímavý článek

    Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).

    🇵🇸 | Komentářů: 20
    12.9. 05:33 | Bezpečnostní upozornění

    Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.

    Ladislav Hagara | Komentářů: 0
    11.9. 22:00 | Komunita

    V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.

    Ladislav Hagara | Komentářů: 16
    11.9. 17:33 | Nová verze

    Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 1
    11.9. 15:33 | IT novinky

    Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.

    Ladislav Hagara | Komentářů: 0
    11.9. 15:00 | IT novinky

    Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.

    Ladislav Hagara | Komentářů: 8
    10.9. 21:22 | Nová verze

    Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (81%)
     (7%)
     (3%)
     (3%)
     (4%)
     (2%)
    Celkem 176 hlasů
     Komentářů: 12, poslední 10.9. 13:00
    Rozcestník

    Dotaz: Časové zamykání řádků tabulky - PostgreSQL

    pools avatar 20.5.2011 16:00 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
    Časové zamykání řádků tabulky - PostgreSQL
    Přečteno: 814×
    Ahoj, řeším teď takový problém se zamykáním tabulky. Píšu jednu webovou aplikaci a potřebuju aby uživatel který edituje jeden objekt při načtení dat zamkl současně tabulku - to by nebyl problém, nevím však, jak to vyřešit, když data zpět neuloží -> a tím pádem tabulku zase neodemkne. Nevíte někdo jestli neexistuje něco jako nastavení času platnosti zámku v Postgresu? Aby třeba platil pouze patnact minut a pak se řádek automaticky odemknul? Nedokázal jsem k tomu na netu nic najít... Díky
    Vivre libre ou mourir!

    Řešení dotazu:


    Odpovědi

    Josef Kufner avatar 20.5.2011 16:17 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Přidej do té tabulky dva sloupce, kde bude čas budoucího odemknutí a ID uživatele, který to zamknul. Pak stačí jen kontrolovat, zda čas budoucího odemknutí je v minulosti nebo NULL.
    Hello world ! Segmentation fault (core dumped)
    pools avatar 20.5.2011 16:33 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    No podobně to dělám doteď, ale myslel jsem spíše nějaký systémovější způsob jestli neexistuje...
    Vivre libre ou mourir!
    20.5.2011 21:50 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    A proč zamyká celou tabulku? Něco máš imho špatně v designu - zamykat bys měl jen to, s čím pracuješ, ne celou tabulku.

    Jinak SELECT blablabla FOR SHARE/UPDATE ti do konce transakce zamkne záznamy pro čtení/pro zápis (nikdo jiný je nebude moct měnit/ani přečíst). Nevím, jak zamykáš jinak, ale tendle zámek se po konci transakce odemkne automaticky.

    21.5.2011 09:42 pools
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    sorry, to byl překlep, zamykám samozřejmě jen editovaný řádek. ale co je podle tebe konec transakce u php skriptu? mi jde o to, zamknout řádek tabulky když načtu data do selectu, abych měl patnáct minut jistotu, že mi je nikdo nepřepíše, ale po této době i když nedám ten update aby se tabulka automaticky odemkla. a potřebuju aby šly nadále číst, jen se nesmí dostat k editaci...
    21.5.2011 12:45 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Konec transakce je příkaz COMMIT/ROLLBACK (popř. konec každého příkazu, pokud si nenastartoval transakci púomocí BEGIN).
    21.5.2011 14:07 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Záleží na tom, co přesně vlastně potřebuješ.

    Jestli máš aplikaci, kde uživatel začne pracovat s nějakým objektem (tzn. načte stránku, něco se mu tam objeví, on do toho chvilku ťuká a píše a pak klikne, aby se uložilo), tak ti transakce nepomůžou a budeš muset udělat něco, co je hned v prvním příspěvku. Tzn. zamknout záznam něčím jako
    UPDATE záznam SET cas_odemceni = now() + '15m'::interval, zamykatel = ID toho, kdo to zamkl WHERE id = ID objektu

    Před pokusem objekt měnit se podíváš, jestli je zamykatel NULL (= záznam není zamčený). Když není NULL, porovnáš ID zamykatele s tím, kdo se snaží k objektu přistoupit (záznam je zamčený pro všechny ostatní.) Když ID nesouhlasí, porovnáš cas_odemceni s now() (jestliže je now() větší, záznam byl zamčen, ale zámek vypršel)

    Pokud máš aplikaci, kde objekt musí být zamčený jenom v době, kdy s ním pracuje ten skript, použij transakce. To už popsal logik v #3 a #5, jenom doplním, že transakci ukončí i konec skriptu, tedy uzavření spojení do DB.
    Quando omni flunkus moritati
    21.5.2011 14:39 dad
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    tedy ja ma tak nejak zafixovano, ze vsechna tahle reseni maji radu much a to z velkou pravdepodobnosti 'nejrozumnejsi' je pouzit timestamp.
    21.5.2011 20:01 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    No zamykání záznamů "dopředu" před editací moc dobrá technika není. Daleko lepší bývá to řešit revizema (při updatu si zkontroluju, jestli mi záznam někdo nezměnil pod rukama (zkontroluju číslo revize) a kdyžtak ho neupravím a místo toho sdělím uživateli problém).
    pools avatar 22.5.2011 14:30 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    takže jako nechám uživatele aby vesele něco pět minut nastavoval a při uložení mu suše oznámíš: dělal jsi to na hovno? rozumím tomu dobře?
    Vivre libre ou mourir!
    22.5.2011 15:18 FooBar
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Ocividne nerozumis, kdyz reagujes takhle agresivne na cloveka, kterej ti poskytuje (naprosto spravnou) radu.

    RTFM: http://en.wikipedia.org/wiki/Optimistic_concurrency_control

    Je to casto pouzivany reseni napr. na wiki, na zaklade predpokladu ze realne to tak moc lidi soubezne editovat nebude. Navic, vzhledem k tomu, ze je to human-readable, muzes pomerne trivialne nabidnout merge vuci novy revizi.

    Optimistic concurrency control ma drahy konflikty (tim ze musis informovat uzivatele / resit merge), ale jinak je trivialni na implementaci a v pripade ze moc konfliktu nemas (coz je typicky pripad prave treba wiki), tak je i efektivnejsi.
    22.5.2011 16:09 dad
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    ja si myslim, ze tohle neni ta spravna odpoved. Aby byla situace jasnejsi, je treba se zeptat soudruha, jak bude reagovat on v tom pripade, ze zaznam je zamcen.

    napise hlasku 'zkuste to ca. za 5 minut', nebo 'zkuste to pozdeji'? A jaka bude hlaska, az to uzivatel skutecne za nejaky cas znova zkusi a opet to bude zamcene?
    22.5.2011 16:16 FooBar
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Nebo ostatne jaka bude reakce, kdyz bude mit zamek na v originalnim postu zminenych 15 minut, a clovek to holt bude editovat 16 minut... a nekdo jiny mu to pred ulozenim sebere pod rukama (a zamkne na dalsich 15 minut).
    Josef Kufner avatar 22.5.2011 22:01 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Tohle se řeší tak, že to nezamkneš na 15 minut, ale na pět (nebo i méňe) a javascriptem v pravidelných intervalech prodlužuješ zámek. Takže jakmile uživatel zavře okno nebo odejde jinam, tak zámek zmizí rychle a pokud edituje hodinu, tak to má hodinu zamčené. Pro případ, že by to jen nechal otevřené, tak je dobré koukat na stisky kláves a pokud se nic neděje, tak se dotázat, zda prodloužit (nějakým tichým způsobem, např. ukázat div s dotazem přes editor).
    Hello world ! Segmentation fault (core dumped)
    pools avatar 22.5.2011 16:39 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Ale to co je v tom Optimistic concurrency control je podle toho co jsem přečetl úplně mimo oproti tomu na co jsem se ptal - já potřebuju vědět jestli to někdo edituje a nemůžu nikomu povolit aby editoval stejnou věc zároveň - mám data pro které to není relevantní. Ptal jsem se jasně jestli existuje způsob jaký popisuju v dotaze - očividně neexistuje, ok, mi to stačí, ale posílat věci které fungujou úplně jinak než potřebuju? proč?
    Vivre libre ou mourir!
    22.5.2011 21:06 vlastik
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    tomu co popisuješ se říká pesimistic locking
    pools avatar 22.5.2011 21:24 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Ne.
    Vivre libre ou mourir!
    22.5.2011 21:50 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Jo
    pools avatar 22.5.2011 23:19 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Není to na co jsem se ptal. Absolutně. Chtěl jsem vědět, jestli existuje něco přímo na úrovni SQL serveru. Ne aplikační vrstvu.
    Vivre libre ou mourir!
    Josef Kufner avatar 22.5.2011 23:47 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Občas je lepší zvážit jiný přístup, který tvůj problém obchází místo toho, abys ho řešil.
    Hello world ! Segmentation fault (core dumped)
    22.5.2011 23:52 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Jenže ono žádnýho inteligentního člověka nenapadlo, že to myslíš pouze a jenom přes SQL server, protože přes něj to přes víc spojení prostě ani principiálně nejde a nemůže jít (teda pokud si nebudeš držet furt otevřený spojení do db, což jaksi na webu nejde). Což bys jaksi zjistil, kdyby sis o tom něco přečet, jak kolega doporučoval. Stejně jako by ses dozvěděl, že to, jestli jde o pesimistic nebo optimistic locking vůbec neznamená, že se zamyká v aplikační vrstvě....
    pools avatar 23.5.2011 09:27 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    "Nevíte někdo jestli neexistuje něco jako nastavení času platnosti zámku v Postgresu? " << chtěl jsem vědět pouze tohle. Pessimistic lock momentálně používám a jediné co jsem chtěl vědět, bylo jestli existuje v postgresu něco podobného. Napadlo mě to pouze pro zajímavost, protože vím, jak se dá zamknout řádek pomocí klíče. Možná jsem málo zdůraznil, že mě zajímá jen tato informace a ne obecné řešení.
    Vivre libre ou mourir!
    23.5.2011 10:28 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Jenže právě ta otázka byla natolik nesmyslná, že je evidentní, že Ti schází potřebný background. A že běz něj v lepším případě vymyslíš kolo, v horším něco zbastlíš.

    Je to, jako by ses zeptal, jak se ve škodovce naklápěj listy vrtule a čílil by ses z odpověděli, že si máš přečíst něco o rozdílu mezi autem a letadlem.

    pools avatar 23.5.2011 11:09 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    ...
    Vivre libre ou mourir!
    28.5.2011 01:01 FooBar
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Naprosto jednoznacne jo. Optmistic/pesimistic concurrency control je zakladni princip rizeni soubeznyho pristupu k datum, nikoliv konkretni implementace.

    Poslal jsem ti odkaz na neco, co funguje jinak nez si myslis ze potrebujes, ponevadz je to reseni naprosto funkcni a korektni. Priste te proste jen poslu do hajzlu.
    22.5.2011 21:49 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Zaprvý, zcela jasně jsi se nezeptal, z dotazu nijak neplyne, jestli jsi schopen držet transakci během doby, kdy to chceš mít zamknutý, navíc mluvíš o zamykání tabulky a ne záznamu. A zadruhý, radit se mi člověku, kterej se chová takhle arogantně, s prominutím nechce.

    Protože teprv teď vyplynulo, že to má bejt asi webová apliakce a transakci držet nemůžeš, tak by mě zajímalo, jak bys řešil to, že když to hypoteticky zamkneš postgresím zámkem na 15min, tak že request na změnu a odemčení poběží ve svý samostatný transakci a tedy se taky přes zámek nedostane...
    pavlix avatar 22.5.2011 22:34 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Je to casto pouzivany reseni napr. na wiki, na zaklade predpokladu ze realne to tak moc lidi soubezne editovat nebude. Navic, vzhledem k tomu, ze je to human-readable, muzes pomerne trivialne nabidnout merge vuci novy revizi.
    Ovšem nesmíš na takovou wiki uspořádat školení :D. Tam ti totiž několik lidí bude editovat právě tu stránku, kterou ukážeš na plátně.

    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    21.5.2011 13:56 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Jen pro úplnost - SELECT ... FOR UPDATE zamkne záznamy jenom pro čtení jiným SELECT FOR UDPATE. Normální SELECT projde.
    Quando omni flunkus moritati
    21.5.2011 19:58 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Jo, nevyjádřil jsem se jasně. Zámek pro zápis zakazuje jakejkoli zápis či zamknutí. Zámek pro čtení zakazuje jakejkoli zápis a zámek pro zápis, povoluje zápis pro čtení.

    tzn. zamknutí pro čtení: zajistim, že mi to nikdo nezmění pod rukama, ale nebudu to měnit, takže povolím ostatním čtení, i s to pro to čtení také zamknout. tzn. zamknutí pro zápis: budu měnit, takže mimo předešlého zakážu i zámek pro čtení (tzn. člověk, kterej to chce konzistentně si musí počkat, až dokončím změnu).
    21.5.2011 22:51 vlastik
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    Doporučuji si na Google nastudovat pojmy "optimistic locking" a "pesimistic locking" a vybrat si jeden z nich a nevymýšlet jakové kočkopsy :)
    23.5.2011 15:14 Ivan
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    +1 presne tak. Ti kockopsi muzou snadno selhat pri vhodne kombinaci izolacniho levelu a nacasovani. Nejjednodussi je predpokladat, ze nic jineho nez pesimisticke a optimistice zamykani ani neexistuje.

    Pokud to neumoznuje vas framework tak je mozna chyba v tom frameworku.
    23.5.2011 15:48 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Časové zamykání řádků tabulky - PostgreSQL
    No já už z něho pochpil,. že v podsttě chce pesimistic locking, až na to, že chtěl, aby mu to zařídila databáze přes několik spojení do ní (což prostě z principu nemůže jít).

    Navíc pesimistic locking pro webovou aplikaci je dosti nevhodné, neboť není zajištěné správné odemknutí (tam se to musí obejít nějakym vypršením zámku), navíc to má různý sideefekty jako víc otevřenejch oken browseru, nedostupnost záznamu při restartu browseru a podobný opičárny.

    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.