Mantenimento della connessione al database [duplicato]

2

Supponiamo che tu stia sviluppando un'applicazione desktop che utilizza estensivamente un database, nel caso in cui tu abbia un handle per il database a cui fa riferimento l'intera app? O dovresti aprire una connessione quando hai bisogno di dati, ottenere i dati e poi chiudere la connessione quando i dati non sono necessari.

    
posta Edgar Aroutiounian 02.03.2014 - 23:39
fonte

1 risposta

5

Hai già elencato le due principali scuole di pensiero sulle connessioni al database. Ognuno ha aspetti positivi e negativi.

Apri una connessione e lasciala aperta per la durata dell'applicazione

Positivo: funziona meglio in un ambiente completamente connesso (principalmente applicazione desktop o server). Limiti il numero di connessioni al tuo database al minimo. Non hai il sovraccarico di fare la connessione e di spegnerlo ogni volta che vuoi eseguire una query.

Negativo: non funziona bene in un ambiente disconnesso o in cui è probabile che la connessione venga interrotta a metà della frequenza.

Apri una connessione abbastanza a lungo per fare ciò che ti serve

Positivo: funziona meglio in un ambiente in cui hai bisogno di dati di rado. È possibile liberare una connessione per un altro processo in un server molto utilizzato. Se ti disconnetti da midstream, riavvia il processo di query con una connessione diversa.

Negativo: c'è un sovraccarico per fare ogni volta una connessione al database. Diventa peggio quando hai SSL e / o VPN oltre alla connessione. Il pool di connessioni al database può essere d'aiuto. Devi essere consapevole che i dati INSERT o UPDATEing possono metterti in una condizione di competizione con un altro utente / processo. È facile da mitigare, ma richiederà ulteriori passaggi di progettazione e codifica.

Per un'applicazione desktop, normalmente raccomanderei l'uso di una connessione aperta. Dovrai ancora avere la gestione degli errori in atto per quando la connessione fallisce (qualcuno riavvia il database su di te).

Tutti i negativi che ho elencato possono essere mitigati o limitati in qualche modo progettando la tua applicazione con le situazioni di errore in mente (ad es., prima di eseguire una query, assicuri che la connessione sia ancora aperta).

    
risposta data 03.03.2014 - 04:32
fonte

Leggi altre domande sui tag