Autore Topic: Mysql in Rete  (Letto 1231 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Mysql in Rete
« il: 20 Settembre 2010, 13:30:27 »
ciao raga.

devo realizzare una rete di pc (3) e Mysql.
In pratica sui 3 pc deve girare il mio programma, e tutti  devono usare lo stesso database (MySql), che deve essere su un HD esterno collegato via lan ai pc. I 3 pc si troveranno nella stessa sede quindi sarà una lan interna.

Inoltre sullo stesso database è presente una tabella con un numero incrementativo (no id, ma lo incremento io da codice), dovrei fare in modo che il numero sia univoco, e se un pc sta registrando dati su quella tabella il secondo pc deve prenotare il numero successivo.

Piccolo esempio: ultimo numero registrato 95, primo pc apre il form per l'inserimento dati e prenota il 96, secondo pc apre e prenota il 97, terzo pc prenota il 98.
Questo solo se più pc aprono lo stesso form, altrimenti si scrive ultimo numero + 1.

Offline ealmuno

  • Maestro Gambero
  • ****
  • Post: 388
    • Mostra profilo
    • http://www.ealmuno.com
Re: Mysql in Rete
« Risposta #1 il: 20 Settembre 2010, 13:39:10 »
Un database mysql di per se non è accessibile dall'esterno, ma modificando qualche parametro lo diventa (è per motivi di sicurezza), se non sbaglio è già stato trattato qui sul forum questo argomento.
Essendo in lan non dovresti avere altri problemi.
Sempre se non sbaglio al secondo problema dovrebbe arrangiarsi da solo il database.
il mio nuovo sito : ealmuno.com

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql in Rete
« Risposta #2 il: 20 Settembre 2010, 14:16:48 »
Sempre se non sbaglio al secondo problema dovrebbe arrangiarsi da solo il database.

ma dovrei settare qualcosa o impostazioni varie?
non credo che il database possa arrangiarsi da solo su una comune tabella non autoincrementante.

Offline ealmuno

  • Maestro Gambero
  • ****
  • Post: 388
    • Mostra profilo
    • http://www.ealmuno.com
Re: Mysql in Rete
« Risposta #3 il: 20 Settembre 2010, 14:26:43 »
avevo letto male, scusa.
Ma perché non lo lasci incrementare in automatico?
Dipende da come gestisci il tutto. L'id quando lo aggiungi, quando inserisci tutti i dati o lo scegli prima?
Comunque per me conviene incrementarlo in automatico.
il mio nuovo sito : ealmuno.com

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql in Rete
« Risposta #4 il: 20 Settembre 2010, 14:34:21 »
non posso farlo autoincrementare
deve seguire una numerazione interna che deve corrispondere a un registro cartaceo.

l'id ha un difetto, se si cancella un record quel numero è perso, il database passa al successivo e non corrisponderebbe più al registro cartaceo.
Inoltre in azienda per esigenze fiscali quando iniziamo un nuovo registro cartaceo partiamo dal primo di quel registro che può non essere progressivo con il vecchio registro.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Mysql in Rete
« Risposta #5 il: 20 Settembre 2010, 14:34:45 »
L'unico modo è salvare la prenotazione su un'apposita tabella dello stesso db.

Il problema però è: se l'inserimento non viene completato, il numero prenotato che fine fà?

Inoltre: quale e quanta importanza ha questo numero?


Ops... un altro metodo è il lock della tabella...
« Ultima modifica: 20 Settembre 2010, 14:37:03 da md9327 (per chi chiama da fuori Roma) »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Mysql in Rete
« Risposta #6 il: 20 Settembre 2010, 15:20:59 »
Secondo me dovresti fare così:

- Il computer 1 (d'ora in poi C1) apre il form dell'inserimento...
- Al server dove risiede il database (d'ora in poi SER) viene spedito un segnale che "mantiene occupato in memoria" un id intero
- computer 2 (C) apre il form dell'inserimento e legge il valore in memoria sul server.....lo incrementa.....
- C2 finisce di fare il suo lavoro ma la sua operazione rimane in sospeso perchè c'è ne una già aperta in precedenza.
- Se C1 finisce positivamente il suo lavoro allora i dati vengono salvati con il giusto ordine di ID altrimenti C2 prende il valore dell'ID che veniva mantenuto da C1

Spero di essere stato chiaro....è solo una delle tante idee utilizzabili....

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Mysql in Rete
« Risposta #7 il: 20 Settembre 2010, 15:47:15 »
Secondo me se il numero incrementativo viene salvato nella tabella (e penso che sia così), dovrebbe essere la stessa cosa che con un id autoincrementante. Basta che il numero venga scritto nel momento che dai salva, controllando nel database il numero maggiore. Se il pc1 salva con il numero 15 (perchè aveva trovato che il numero maggiore era 14) e dopo 1 secondo il pc2 salverà col numero 16 perchè troverà il numero maggiore 15. Almeno credo sia così

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Mysql in Rete
« Risposta #8 il: 20 Settembre 2010, 16:28:43 »
Sarebbe più semplice se il numero si potesse definire in fase di memorizzazione. Se non necessiti di farlo vedere immediatamente, durante l'insert potresti crearlo al volo, lockando momentaneamente la tabella in scrittura...

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql in Rete
« Risposta #9 il: 20 Settembre 2010, 17:14:46 »
Sarebbe più semplice se il numero si potesse definire in fase di memorizzazione. Se non necessiti di farlo vedere immediatamente, durante l'insert potresti crearlo al volo, lockando momentaneamente la tabella in scrittura...
il numero mi serve alla fine, dopo il salvataggio del record, anche i dati vengono prima scritti nei vai controlli del form e quando l'utente preme salva prima da codice viene effettuato un controllo sull'esattezza dei dati e poi salva.

in effetti l'accesso al database richiede pochissimo, finche i tre pc inseriscono dati nel form nessuno si collega al database, solo al momento del salvataggio. E dato che il salvataggio richiede poco nel caso che pc2 salvi i dati si può mettere in attesa con un sms.

un po simile al suggerimento di ceskho, solo che non ho capito che segnale mandare al server.

Come posso bloccare la tabella? con begin?

@Golia
si il numero è tipo incrementativo io controllo nel database con una query maxnumero e aggiungo 1.
ps ho scaricato la tua guida su mysql in rete, ben fatta e facile da usare, unica cosa dato che io devo mettere il server MySql su un HD esterno come faccio ad installarlo?

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Mysql in Rete
« Risposta #10 il: 20 Settembre 2010, 17:36:08 »
Citazione
unica cosa dato che io devo mettere il server MySql su un HD esterno come faccio ad installarlo?
Mi spiace ma non ho idea, provo a cercare. Ciao

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Mysql in Rete
« Risposta #11 il: 20 Settembre 2010, 18:06:58 »
Citazione
unica cosa dato che io devo mettere il server MySql su un HD esterno come faccio ad installarlo?
Mi spiace ma non ho idea, provo a cercare. Ciao
[/quote]

Lo salvi in locale e sull'hard disk ci fai una copia di backup....

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql in Rete
« Risposta #12 il: 20 Settembre 2010, 20:06:53 »
@Ceskho
salvandolo in locale dovrei scegliere un pc dove mettere il Database, il problema è che non sempre tutti i pc sono accesi, solo nei giorni di megalavoro, e mettendolo su un singolo pc lo dovrei tenere sempre acceso.
inoltre mi serve su hd esterno in quanto posso montarlo in una minicassaforte o armadio blindato.

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Mysql in Rete
« Risposta #13 il: 20 Settembre 2010, 20:07:59 »
inoltre mi serve su hd esterno in quanto posso montarlo in una minicassaforte o armadio blindato.

Questi sono i problemi di quando si lavora all'FBI....:rotfl:

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Mysql in Rete
« Risposta #14 il: 20 Settembre 2010, 21:26:29 »
Mi sa che più che hd esterno, ti ci vuole un pc che faccia da server..