Autore Topic: Aprire subito la connessione o solo al momento?  (Letto 547 volte)

Offline jockerfox

  • Gambero
  • **
  • Post: 77
    • Mostra profilo
Aprire subito la connessione o solo al momento?
« il: 06 Ottobre 2013, 19:26:57 »
Ciao..
Oggi sono indeciso nell'apertura della connessione: subito o al momento dell'uso?  ???

Mi spiego.
Ho un programma che lavora con il database... secondo voi, è corretto aprire subito (all'avvio del programma) la connessione con il file database sqlite e richiuderlo a fine programma?
Di PRO avrei anche che è LOCKED con altri programmi che vorrebbero modificarlo, giusto?

Voi come lavorate di norma? Quale decisione prendete?  ???
:-)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Aprire subito la connessione o solo al momento?
« Risposta #1 il: 07 Ottobre 2013, 14:17:32 »
Sarebbe buona norma rilasciare il prima possibile le risorse usate, a meno che non vi sia in mezzo una transazione elaborativa particolare.
Detto questo, la cosa migliore è di aprire la connessione, fare tutte le opportune operazioni sul db, e richiudere subito, rilasciando la risorsa il prima possibile.
Di certo, come ho detto prima, se il processo è lungo, e deve mantenere la sua sessione appena aperta, allora è tutto un'altro paio di maniche, ma attenzione al blocco di processi paralleli. In questo caso sarebbe utile un'analisi se effettuare o meno un sistema a stati finiti, in modo da dare l'opportunita anche ad altre cose di poter funzionare.

Offline jockerfox

  • Gambero
  • **
  • Post: 77
    • Mostra profilo
Re: Aprire subito la connessione o solo al momento?
« Risposta #2 il: 12 Ottobre 2013, 15:45:00 »
Allo stato attuale, apro la connessione, lavoro sul database, chiudo la connessione.
Spesso succede però che più operazioni vengono fatte nel database per cui pensavo si spostare l'apertura della connessione "a monte" delle operazioni.
In sintesi, succede che il programma deve leggere svariati record e poi modificarli tutti; per far ciò vengono richiamate delle "azioni" che a loro volta richiamano delle routines che aprono la connessione, modificano il record, poi richiudono la connessione.
A tale proposito l'idea malvagia  :P di aprire la connessione sin da subito.. ma non mi piace anche a me. Sposterò l'apertura (e la ciusura) a monte delle "azioni".

Grazie per la risposta..  :2birre:
:-)