Zdravím kluci.
Název vlákna může být zavádějící, ale pokusím se problém popsat.
Do databázy ukládám množinu dat (ty se neustále mění, čili žádné "odkladiště") a potřebuji aby se změna provedena na jednom klientovi, co nejdřív projevila i na všech ostatních. Ono "co nejdřív", není zase tak kritické, jedná se o cca 3-5 vteřin. Počet klientů pro daný problém 2-4.
Již mám nějakou představu jak na to, ale nic podobného jsem nikdy nedělal. Tak bych si docela rád nechal poradit, jestli máte někdo zkušenosti, jak se přes databázi sdílí změny v tabulce.
Ono totiž dát aplikaci pokyn, aby každých 5 vteřin stáhla 2 kompletní tabulky (zhruba 500x30 a 100x15) a zjistila zda a co se za posledních 5 vteřin změnilo mi přijde nereálné... teda minimálně špatné řešení.
Moje předběžná smělá představa :-) :
1.Vytvořit třetí tabulku, kde se do fronty budou ukádat jen právě provedené změny (sloupce pro data + sloupec s boolean hodnotou pro každého klienta).
2.Klient, který záznam vytvoří, nastaví všechny booleany pro další klienty na False, vlastní na True (vysvětlím)
3.Každých 5 vteřin si každý klient přečte první řádek. Když je jeho sloupec False, aktualizuje data z řádku a nastaví sloupec na True.
KLient zároveň skontroluje, zda nejsou už všechny sloupce nastaveny na True (všichni klienti už data aktualizovali). Jestli ano, řádek se vymaže.
4. Jestli je dle bodu 3, klientův řádek stále "nesmazatelný", ale již nastaven na True, přečte další řádek a opakuje bod 3 (což ošetřuje skutečnost, že někteří klienti cíleně "zameškají" pár cyklů)
...posuďte, schvalte, zamítněte, navrhněte lepší...
děkuji