Archiviazione dati per piccole applicazioni tramite XML

3

Sto sviluppando una piccola applicazione come hobbista. Questa applicazione tiene traccia dei costi (ad esempio acquisti e vendite, ...) per una società individuale.

Vengono memorizzati solo i tipi stringa, data, doppio, intero e decimale. I riferimenti ai file saranno path.

Voglio memorizzare questi dati da qualche parte strutturati e la mia conoscenza di SQL è inferiore allo zero. Quindi sto pensando perché non usare un file .XML? È considerata una pessima pratica?

Se continuo a utilizzare il sistema di salvataggio XML, potrei comunque trasferire i dati in seguito su un vero database relazionale, se necessario (credo?).

O sarebbe saggio colpire i libri e recuperare su SQL?

    
posta Mech_Engineer 13.09.2018 - 15:52
fonte

3 risposte

8

La memorizzazione dei dati in file testuali come XML o JSON è perfetta, ma ha un paio di restrizioni. Ogni volta che hai bisogno di leggere alcuni dati devi prima caricare l'intero file, e per qualsiasi modifica è necessario scrivere di nuovo l'intero file sul disco. Molti formati di documenti come .docx usano effettivamente questo approccio (beh, un archivio ZIP di file XML per essere precisi).

Ma poiché devi sempre leggere e scrivere tutti i dati, questo funziona solo per piccole quantità di dati, forse fino a pochi MB. Potrebbe essere più che sufficiente per il tuo caso d'uso, ma gli scenari più ampi traggono vantaggio da un vero database che può fare aggiornamenti incrementali. Non è necessario distribuire un server di database separato. Per uno scenario a utente singolo, invece, è possibile utilizzare motori di database incorporati come SQLite.

Per mantenere la flessibilità di passare da un meccanismo di memorizzazione all'altro, considera l'utilizzo di un'architettura come pattern di repository o livello di accesso ai dati per separare il codice principale da qualsiasi codice che interagisce direttamente con lo spazio di archiviazione.

    
risposta data 13.09.2018 - 16:09
fonte
2

Quali sono i tuoi obiettivi?

  • creare una piccola applicazione solo per te stesso, per un uso reale nella tua compagnia personale, con il minimo sforzo possibile? Quindi l'utilizzo di qualcosa di più grande di un file XML sarebbe probabilmente un overengineering.

  • fai questo per scopi di apprendimento, per avere esperienza nello scrivere applicazioni più grandi? Quindi utilizzare un database, l'apprendimento di SQL è sicuramente qualcosa di cui ogni programmatore di applicazioni professionale potrebbe trarre beneficio.

Non ci sono "buone pratiche" o "cattive pratiche" nel vuoto - solo soluzioni che si adattano bene o meno ai requisiti indicati.

I could still port the data later to real relational database if required ( I think? ).

Sì, è possibile, ma ci sono diversi modi per raggiungere questo obiettivo, con costi diversi. Se, ad esempio, sei ancora soddisfatto di una soluzione per utente singolo, lo sforzo potrebbe essere basso, dal momento che puoi implementare il caricamento e il salvataggio dell'intero set di dati contemporaneamente dal db, proprio come se dovessi caricare tutti i dati da un file XML a una volta. Se, tuttavia, si desidera ottenere una reale funzionalità multiutente, un comportamento transazionale, un meccanismo di collisione elegante in caso di modifiche parallele, la modifica potrebbe causare una riprogettazione completa fino alla GUI, le parti dei dati che vengono visualizzate / modificabili a una volta e la sua gestione degli errori.

    
risposta data 13.09.2018 - 18:57
fonte
-2

Ci sono alcune cose da considerare prima di poter dare una risposta specifica a questa domanda, ma come regola generale, direi, se si stanno memorizzando dei dati, dovrebbe entrare in un database. Detto questo, so quanto può essere difficile provare ad imparare 123124151233 nuove cose contemporaneamente, quindi se vuoi salvarlo in un file xml e pensi di poterlo fare, prova a farlo.

Ecco alcune cose da considerare. Che tipo di app stai scrivendo? Se si tratta di un'applicazione web RESTful, forse JSON sarebbe una soluzione migliore. Se stai pensando di passare a un db relazionale più tardi, magari vai con un file csv. Un'altra opzione (se vuoi imparare tutte le cose nuove in una volta), magari vai con un nosql db come mongo.

    
risposta data 13.09.2018 - 16:07
fonte

Leggi altre domande sui tag