Quando si dovrebbe preferire un database per l'archiviazione dei dati rispetto all'archiviazione dei dati in un file di testo?
Wikipedia ci dice che un database è una raccolta organizzata di dati . Con questa misura, il tuo file di testo è un database. Continua dicendo:
I dati sono in genere organizzati per modellare gli aspetti rilevanti della realtà in modo da supportare i processi che richiedono queste informazioni. Ad esempio, modellare la disponibilità di camere negli hotel in modo da supportare la ricerca di un hotel con posti vacanti.
Quella parte è soggettiva - non ci dice in modo specifico come i dati dovrebbero essere modellati o quali operazioni debbano essere ottimizzate. Il tuo file di testo è composto da un numero di record distinti, uno per ogni giorno, quindi stai modellando un aspetto della realtà in un modo che sia rilevante per il tuo problema.
Mi rendo conto che quando dici "database" probabilmente stai pensando a una sorta di sistema di gestione di database relazionali, ma pensare al tuo file di testo come a un database cambia la tua domanda da "quando dovrei usare un database?" a "che tipo di database dovrei usare?" Vedere le cose alla luce rende la risposta più facile da vedere: usa un database migliore quando quello che hai non soddisfa più le tue esigenze.
Se il tuo script Python e il tuo semplice file di testo funzionano abbastanza bene, non c'è bisogno di cambiare. Con solo un nuovo record al giorno e i computer che diventano più veloci ogni anno, sospetto che la tua soluzione attuale potrebbe essere praticabile per molto tempo. Un decennio di dati ti darebbe solo 3650 record che, una volta analizzati, richiederebbero probabilmente meno di 75 kilobyte.
Immagina che invece di un piccolo record al giorno, hai deciso di registrare ogni domanda posta su CodeReview, chi l'ha fatto e quando. Inoltre, raccogli anche tutte le risposte e i metadati pertinenti. Si potrebbe memorizzare tutti che in un file di testo, ma un file flat renderebbe difficile trovare informazioni quando ne avevi bisogno. Ci sarebbero troppi dati per leggere tutto in memoria, quindi ogni volta che vuoi trovare una domanda o una risposta, dovresti scansionare il file fino a quando non trovi quello che stavi cercando. Quando volevi trovare tutte le domande poste da un determinato utente, dovresti scansionare l'intero file. Se volessi trovare tutte le domande che hanno "bug" come tag, dovresti scansionare il file.
Sarebbe terribilmente lento, quindi potresti decidere di accelerare le cose costruendo alcuni indici che ti dicono dove cercare nel file per trovare un dato record. Potresti avere un indice per le domande, un altro per gli utenti, un terzo per le risposte e così via. Quando volevi trovare una domanda, cercavi l'indice (molto più piccolo) della domanda, prendevi la posizione della domanda nel file di dati principale e salta rapidamente al punto giusto nel file. Sarebbe un grande miglioramento delle prestazioni. In effetti, è praticamente quello che è un sistema di gestione di database.
Quindi, utilizzare un DBMS quando è quello che ti serve. Usalo quando hai molti dati, quando devi essere in grado di accedervi rapidamente e forse in modi che non puoi prevedere completamente all'inizio. Se si dispone di diversi tipi di dati, diversi tipi di record, collegati tra loro, utilizzare un RDBMS in modo da poter collegare i vari record in modo appropriato.