Sto lavorando su un software che utilizza VB.Net che recupera pacchetti di stringhe attraverso un socket TCP. Il problema è che riceve centinaia di pacchetti al secondo. Per ogni pacchetto in arrivo il software deve connettersi al database (in questo momento è Access DB) ed eseguire una delle seguenti operazioni:
- Interrogare una riga del database e utilizzarne alcuni (non c'è problema con questo).
- Interrogare una riga, leggere alcuni elementi e quindi modificare gli elementi nella stessa riga.
- Interrogare una riga, leggere alcuni elementi e quindi modificare gli elementi in un'altra riga.
Ora ovviamente questo deve essere fatto il più velocemente possibile, quindi sto cercando un buon modo (usando anche meno risorse) per gestirlo.
L'unico modo che conosco per interrogare & modificare i dati nella stessa connessione è utilizzare la modalità disconnessa (metodo # 3) ma sto pensando che se utilizzo la modalità disconnessa per gestire l'aggiornamento dei dati, ciò potrebbe causare alcuni conflitti.
Ecco cosa ho pensato in ogni caso:
Metodo n. 1 (Mix tra modalità connessa e disconnessa):
Crea una funzione che utilizza DataAdapter
e restituisce una variabile di tipo DataRow
contiene i dati della riga trovata. Quindi modifica la riga direttamente nel DB utilizzando l'istruzione UPDATE.. SET
e il metodo ExecuteNonQuery
.
Metodo n. 2 (tutti connessi):
Crea una funzione che utilizza DataReader
e restituisce gli elementi richiesti dalla riga trovata. Quindi modifica la riga direttamente nel DB utilizzando l'istruzione UPDATE.. SET
e il metodo ExecuteNonQuery
.
Metodo n. 3 (tutti disconnessi):
Esegui una query e riempi la riga trovata in DataTable
utilizzando DataAdapter
, quindi aggiorna & salva la riga utilizzando CommandBuilder
e DataAdapter.Update
Quindi, sto cercando l'approccio migliore per gestirlo. Per favore offri altri approcci se pensi che sia meglio dei 3 metodi che ho citato.
Nota: sto usando un database di Access in questo momento per problemi di comparabilità e sto pensando di usare MySQL in futuro.