NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
jan.pichl
Člen
Avatar
jan.pichl:6.2.2017 7:48

Ahoj,

chtěl bych použít databázi, ke které bude přistupovat několik klientů běžících na různých stanicích. A nevím jak zabezpečit, aby měli všichni klienti stejná data i v případě že jeden z nich provede změnu (přidá, odstraní, změní řádek tabulky). Typicky všichni klienti načtou informaci že je 5 hrušek skladem a ukazují to obsluze, v momentě kdy jedna stanice počet hrušek změní tak by se o tom měli dozvědět i ostatní stanice. A co dělat v případě že dojde k souběhu. Třeba dvě stanice sníží současně počet hrušek na 0 což by nemělo jít.

Napadlo mě mít prostředníka mezi klienty a databází, jenž bude řešit případné kolize a zpřístupňovat podle potřeby záznamy. Možná že to jde řešit už na úrovni databáze.

Poradil by mě prosím někdo zkušenější, kterým směrem by se měly ubírat mé kroky při řešení ?

Předem děkuji.

Editováno 6.2.2017 7:49
 
Odpovědět
6.2.2017 7:48
Avatar
Odpovídá na jan.pichl
Michal Štěpánek:6.2.2017 9:02

Desktop nebo web? V podstatě by se to nemělo povést, aby dvě stanice provedly stejnou věc skutečně ve stejném okamžiku, podle mě vždycky někdo bude "první"... Myslím, že by mělo stačit ošetřit, aby před provedením transakce program zkontroloval "proveditelnost akce", tzn., že by zjistil skutečný stav na skladě, nebo prostě ten "první" zamkne záznam, s kterým pracuje... Možná někdo navrhne lepší řešení...

Nahoru Odpovědět
6.2.2017 9:02
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na jan.pichl
Marian Benčat:6.2.2017 17:19

Resis concurrency. Záleží jak moc to chceš řešit.. Máš optimistickou concurrency a pesimistickou.. Ta pesimistická znamená Lockování určitých věcí, optimistická funguje nejjednodušeji tak, že ukládáš s daty společně i časové razítko a při ukládání ho kontorlujes. Určité ORM frameworky (EF) toto mohou kontrolovat za tebe a vbyhazovat concurrency exception.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
6.2.2017 17:19
Totalitní admini..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.