Memorizzare le impostazioni in una tabella nel mio database SQLite o separatamente?

3

Sto costruendo un'applicazione che usa SQLite e ora voglio aggiungere le impostazioni che sono memorizzate tra le sessioni

Sto pensando di salvare le impostazioni in un file di configurazione o se userò una tabella nel database per questo

(Si noti che sto usando SQLite che memorizza i dati localmente e non ha un account utente)

Il motivo per cui sto pensando di usare il database è che vorrei evitare di aggiungere più complessità e poiché ho già impostato il mio database SQLite, penso che potrei anche usalo anche per le impostazioni

Che cosa devo considerare quando scelgo tra queste due opzioni?

Sono propenso ad usare una tabella nel database ma sono un po 'preoccupato perché questa risposta dice che la memorizzazione delle impostazioni all'interno del database è una cattiva separazione delle preoccupazioni .

Tuttavia non sono sicuro di quali siano gli svantaggi pratici. Dal momento che il codice è auto-documentante e in termini di leggibilità, è chiaro dove si trovano le impostazioni se la tabella db è chiamata "impostazioni"

(Un inconveniente che posso pensare potrebbe essere se prevedo che le impostazioni cambino molto più rapidamente dello schema db, poiché ciò significherebbe cambiare il database che è più complicato rispetto alla modifica delle impostazioni)

Grato aiuto per questo!

Domande simili:

posta sunyata 25.08.2017 - 15:43
fonte

3 risposte

4

L'ampia applicazione legacy che ho mantenuto è andata avanti e indietro nel corso degli anni, ma si è evoluta per mantenere la maggior parte delle impostazioni nel DB. Sì, la stringa di connessione DB viene letta dal file di configurazione. Questa è un'applicazione desktop che utilizza pesantemente un DB e che ha alcune impostazioni. Se ne hai pochissimi, questo sarà meno applicabile, ma questi sono i primi motivi che ti vengono in mente:

  • I file di configurazione sono in genere letti solo all'avvio, modifiche significano riavviare l'applicazione. (Non è una regola difficile, ma l'uso previsto.)

  • Le impostazioni del DB possono essere modificate tramite una GUI che fa parte dell'applicazione e direttamente aggiornata utilizzando le routine di DB già esistenti senza dover accedere ad alcun file esterno.

  • Le modifiche apportate dalla GUI possono essere facilmente utilizzate per generare eventi e i nuovi valori possono essere utilizzati immediatamente. Davvero non vuoi monitorare le modifiche a un file esterno - guarda il primo punto.

  • Il DB non è accessibile agli utenti regolari e le modifiche possono essere limitate e convalidate. Un file di configurazione è esposto e può essere modificato con qualsiasi editor, senza la convalida dei valori.

  • Abbiamo set di impostazioni - "Profili" - che sono personalizzati su base per installazione. Ciò sarebbe alquanto complicato da mantenere con un file di configurazione.

risposta data 31.08.2017 - 19:56
fonte
9

Non sono d'accordo sul fatto che la memorizzazione delle impostazioni in una tabella di database sia una brutta separazione delle preoccupazioni. Le tue "preoccupazioni" saranno separate non definendo una relazione tra la tabella delle impostazioni e altre tabelle nel tuo database. Questo va bene.

La cosa principale da considerare è il modo in cui ti aspetti che l'amministratore del tuo sistema apporti modifiche alle impostazioni. È molto più semplice per la maggior parte delle persone aprire semplicemente un file di configurazione e apportare modifiche. Se si archivia la configurazione in un database, è necessario concedere l'accesso ad utenti / amministratori per apportare modifiche. Se non sono in grado di apportare modifiche direttamente nel database, potrebbe essere necessario fornire una schermata nella propria applicazione per apportare tali modifiche. Ho fatto questo in entrambe le applicazioni web e mobile e funziona bene. (Poiché le modifiche vengono apportate tramite l'applicazione stessa, ignora anche la necessità di riavviare l'applicazione come faresti se le modifiche fossero apportate esternamente modificando un file.)

    
risposta data 25.08.2017 - 16:58
fonte
0

Tutto dipende da quanto sono grandi le tue impostazioni. Se fosse un paio di valori, sarebbe più semplice e meno sovraccarico conservarlo in un file. Soprattutto che questo file potrebbe essere un XML facile da gestire.

Se è necessario memorizzare le impostazioni in un luogo sicuro (ad esempio, il salvataggio delle credenziali), un database potrebbe essere un'opzione leggermente migliore. Ovviamente dovresti crittografare quelle credenziali quando li salvi su un file o in una tabella.

Da un punto di vista architettonico, dovresti salvare almeno un pezzo di informazione in un file, cioè la tua stringa di connessione al database, in modo da non doverla codificare (cattiva pratica).

    
risposta data 25.08.2017 - 16:43
fonte

Leggi altre domande sui tag