Newsgroup: it.comp.software.database
Titolo: [PROGRAMMAZIONE] Gestione accessi concorrenti

Ciao a tutti.
Devo sviluppare un applicativo gestionale con architettura di tipo client-server 
e vorrei qualche consiglio sulla politica da adottare per gestire gli accessi 
concorrenti di piu' utenti allo stesso database. Il tutto, possibilmente, senza 
doversi necessariamente legare ad uno database specifico.
Grazie per l'attenzione
Andrea Barbagallo

 ha scritto nel messaggio
news:442abd83$0$2270$4faf...@reader4.news.tin.it...

ogni utente modifica solo i suoi dati e "legge anche quelli degli altri"
poi dipende con che sviluppi

 database specifico.
Un db che supporti gli standard Ansi di isolamento delle transazioni e
i lock a livello di riga farà al caso tuo.
Imposta correttamente i livelli di isolamento, e affidati completamente
al motore di database (non forzare le cose con LockTable(),
accessi pseudo-sequenziali o simili); è la soluzione più
scalabile, portabile e -fatto non secondario- impegna meno il
programmatore :-)
Ci sono naturalmente anche altre cose importanti, ma io mi sono sentito
anzitutto di dire quanto sopra per metterti in guardia da un "certo
modo" di fare programmi, che una volta adottato ti lega mani e piedi,
e da cui si esce solo con una riscrittura generale...
Ciao

 Imposta correttamente i livelli di isolamento, e affidati completamente
Come aprire una transazione, chiuderla (commit) o annullarla (rollback) lo so 
gia' fare col linguaggio di programmazione che utilizzo. Quello che non mi e' 
chiaro e' come regolarmi con i livelli di isolamento. Potresti chiarire meglio 
questo concetto? Quali sono i livelli di isolamento disponibili? In base a cosa 
si sceglie un livello di isolamento piuttosto di un altro?


Andrea Barbagallo ha scritto:

Per PostgreSQL:
http://www.postgresql.org/docs/8.1/interactive/mvcc.html
Per un database embedded come SQLite:
http://sqlite.org/sharedcache.html
http://sqlite.org/lockingv3.html
Se vuoi usare molti database devi abbandonare l'idea di portabilita'
(come la intendi tu).
Altrimenti usa solo database relazionali "veri", anche se non so quanto
siano compatibili con le direttive dello standard SQL riguardo questo
specifico aspetto.
La cosa interessa anche a me.
Saluti  Manlio Perillo

 piuttosto di un altro?
Solitamente se ne riportano 4, ma ci sono anche alcune feature che
qualche dbms aggiunge... mi sembra pure che il "serializable" sia
diverso dal 4° livello ansi.
Se programmi attraverso librerie o componenti, accertati di quale
livello impostano di default.
Studia bene i doc a corredo dei principali db, come ha detto Manlio,
e avrai chiaro quale livello usare (impossibile dare un consiglio
via web, senza analisi).
Ciao

 diverso dal 4° livello ansi.
A proposito: esiste qualche risorsa libera in rete che affronti questi
temi, insieme alle basi della teoria relazionale, normalizazione e
regole di Codd, etc?
Non mi va di leggermi un libro di 700 e passa pagine...
Saluti e grazie  Manlio Perillo

 Non mi va di leggermi un libro di 700 e passa pagine...
Tutti questi argomenti, assieme? Ne dubito, o almeno mai visto.
Con una googlatina trovi molta roba sulla normalizzazione; si legge
velocemente e va bene per iniziare.
Non ho un link particolare da consigliarti, per me un libro è
insostituibile.
In effetti, pensandoci, avverto un vuoto di un bel sito, che sia
focalizzato sul design e sul data modeling; se qualcuno sa, posti
pure il link, anche se sono disilluso sulla qualità media di quello
che si trova...
Ciao

 
Mi associo.
