|
|
|
![]() |
|
Strumenti |
![]() |
#41 | |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
Quote:
![]() Come detto voglio solo impedire ad un utente di andare in modifica di un record quando è già in uso.
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
|
![]() |
![]() |
![]() |
#42 |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
No
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
![]() |
![]() |
![]() |
#43 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ok, quindi vuoi bloccare solo modifica contemporanea.
Imho potresti gestire bene con i trigger l'effettiva cancellazione dei lock in caso di timeout. |
![]() |
![]() |
![]() |
#44 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Detta cosi', e' la gestione normale, proprio normalissima, di un database (uin database vero pero', gli altri non garantisco).
Apri una transazione, modifichi un record, tieni aperta la transazione. Tutti gli altri potranno entrare in lettura su tale record, e aspetteranno invece se dovessero tentare una scrittura. Fino a che la transazione non restera' aperta.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#45 | |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
Quote:
Beh si può fare, si tratta sempre di decidere quanto codice lasciare sul database e quanto sull'applicazione. Di sicuro con i trigger è più veloce (e magari anche più sicuro) però ogni database avrebbe un trigger scritto diversamente giusto?
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
|
![]() |
![]() |
![]() |
#46 | |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
Quote:
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
|
![]() |
![]() |
![]() |
#47 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Inoltre pensa, p.es. se l'applicazione client si schianta (terminologia tecnica informatica, soprattutto quando c'e' un database coinvolto). Nel caso di gestione demandata al database, la transazione viene forzata chiusa con rollback, e il record e' di nuovo libero. Nel caso di gestione tua invece devi prevedere e gestire questo evento, altrimenti nessuno potra' piu' accedere al record.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 28-03-2010 alle 11:22. |
|
![]() |
![]() |
![]() |
#48 |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
Come ho detto:
-Il lock si applica solo per aprire in modifica il record e non influisce il funzionamento di qualsiasi altra query -Se il lock fallisce controllo che che la connessione dell'utente che sta eseguendo il lock non sia "morta" e in tal caso rimuovo tutti i lock per quell'utente (dall'applicazione o da trigger come mi suggeriva cionci) So che forse non è la soluzione migliore però intanto voglio provare a seguire questa strada che come tutte le altre possibili ha i suoi pro e i suoi contro e le sue limitazioni.
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
![]() |
![]() |
![]() |
#49 |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
.....ma FireBird non supporta le colonne autoincrementanti...?
![]()
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
![]() |
![]() |
![]() |
#50 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Per la rimozione di un utente in timeout puoi fare così: fai in modo che tutti gli utenti debbano fare un UPDATE del timestamp nella tabella degli utenti loggati ogni tot secondi (ad esempio 60 secondi). Metti un trigger su UPDATE e su INSERT con relativa stored procedure che elimina tutti gli utenti il cui timestamp è più vecchio di 70 secondi. Così automaticamente lanci la rimozione dei lock di quell'utente. |
|
![]() |
![]() |
![]() |
#51 |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
E' praticamente come l'avevo pensato (anche se vorrei che i tempo dopo cui un client è considerato morto sia almeno 2,5 volte il tempo di aggiornamento). Potrei lavorare sui trigger di inserimento della tabella delle connessioni utente e quella dei record in lock.
A lavoro quando ho parlato di un timer per gestire gli utenti connessi mi hannno guardato male tu che ne dici invece?
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
![]() |
![]() |
![]() |
#52 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
![]() |
![]() |
![]() |
#53 |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
Per fare l'update dovrò avere un timer, mi hanno detto che porta via troppe risorse e che non dovrei usarlo.
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
![]() |
![]() |
![]() |
#54 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
![]() |
![]() |
![]() |
#55 | |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
Quote:
![]()
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
|
![]() |
![]() |
![]() |
#56 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non mi sembra che un thread che si sveglia ogni 60 secondi ed effettua una query sia un'operazione costosa. Anzi...
Chiedigli meglio le motivazioni. |
![]() |
![]() |
![]() |
#57 |
Senior Member
Iscritto dal: Jul 2008
Città: Solesino (PD)
Messaggi: 1252
|
E' quello che ho pensato anche io... proverò a chiedere meglio.
Grazie comunque. PS: Ora sto provando PostgreSQL e mi ha colpito positivamente
__________________
Desktop: AMD FX-8350 @4,2Ghz + A.C. FREEZER XTREME rev.2 - ASUS M5A99X EVO - 32GB DDR3 (4x8GB) @1866Mhz - Sapphire NITRO+ RX 580 8GB - SSD Crucial MX500 1TB - Antec Two Hundred - Seasonic Focus+ Platinum 650W Always remember to K.I.S.S. In Vendita: Lenovo ThinkServer TS440 |
![]() |
![]() |
![]() |
#58 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Si usano i generatori o sequenze (quest'ultimo è il termine usato nello standard SQL-9x e SQL-2003) che ti permettono, tra l'altro, di avere un controllo più fine.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:31.