
Originariamente inviata da
MySQL
Vabbè non l'ho letto non posso dir nulla
La concorrenza in scrittura può essere alta (con rischi di incoerenza dei dati) o via via più bassa (con pochi o nessun rischio) fino ad arrivare alla serializzazione, che è la scrittura dei dati uno alla volta.
E cosa te lo vieta? Puoi
Ehhhh... magari sia così semplice...
Qui ci vogliono 20.000 pagine almeno di spiegazioni, non so se è consentito su questo forum mettere link diretti a un po' di documentazione.
Immagina comunque un caso di studio semplice e tipico: la prenotazione di una camera di albergo.
Mentre Tizio sta iniziando a prenotare l'ultima camera (supponiamo) libera, anche Caio lo sta facendo.
Chi dei due riuscirà a prendere la camera?
Quando Tizio inizia è libera, quindi entrerà nella modalità di registrazione.
Ma è libera anche per Caio, e pure lui inizierà la sua prenotazione.
Ad un certo punto uno dei due farà "conferma", e cosa succede? Che l'altro farebbe pure lui "conferma", ritenendo che la camera sia ancora libera.
Per affrontare questo (ed altri) problemi si usano le c.d. transazioni (nota: si usano con Java, con PHP o quello che vuoi, non cambia il programma d'interfaccia con MySQL), le quali per andar sinteticamente hanno 4 livelli di "durezza": Atomicity,Consistency,Isolation,Durability (ACID).
Ora puoi dare dei comandi che in MySQL si chiamano
codice:
set transaction isolation level
a REPEATABLE READ, READ COMMITTED, READ UNCOMMITTED, SERIALIZABLE
In sostanza ci sono due problemi diversi:
- gestione della concorrenza (soprattutto in scrittura), che NON dipende dal linguaggio che usi
- capacità di MySQL di fare o non fare qualcosa, che di nuovo NON dipende dal linguaggio
Non nasce nessun problema, anche perchè MySQL se ne frega dei "ruoli" (?)
Non so cosa siano i "ruoli" nel senso che intendi, non posso aiutarti
PHP può usare entrambi, normalmente usa TCP.
Riassumo così, visto che mi sembra che le idee siano un po' confuse.
MySQL se ne frega se viene pilotato da un programma Java, PHP, C, o addirittura da comandi "a riga di comando".
Non c'è quindi differenza tra un programma Java o PHP su quello che può fare o non fare con MySQL.
La vera differenza (se parliamo di Java e PHP) è che il primo è eseguito dal client (dalla macchina virtuale del client), mentre il secondo è eseguito dall'interprete PHP (che è sul server).
Ma alla fine non cambia nulla riguardo alla "potenza" dei programmi che puoi fare (... OK vado via...)