When should a database be preferred for storing the data over storing the data in a text file?
Wikipedia ci dice che un database è una raccolta organizzata di dati . Con questa misura, il tuo file di testo è un database. Continua dicendo:
The data are typically organized to model relevant aspects of reality in a way that supports processes requiring this information. For
example, modeling the availability of rooms in hotels in a way that
supports finding a hotel with vacancies.
Quella parte è soggettiva - non ci dice in modo specifico come dovrebbero essere modellati i dati o quali operazioni devono essere ottimizzate. Il tuo file di testo è costituito da un numero di record distinti, uno per ogni giorno, quindi stai modellando un aspetto della realtà in un modo pertinente al tuo problema.
Mi rendo conto che quando si dice "database" probabilmente stai pensando a una sorta di sistema di gestione dei database relazionali, ma se pensi 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 in quella luce rende la risposta più semplice da vedere: usa un database migliore quando quello che hai non soddisfa più i tuoi requisiti.
Se il tuo script Python e il semplice file di testo funzionano abbastanza bene, non c'è bisogno di cambiare. Con solo un nuovo record al giorno e i computer sempre più veloci ogni anno, sospetto che la tua soluzione attuale possa essere valida per molto tempo. Un decennio di dati fornirebbe 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 tutte le domande poste su CodeReview, chi lo ha chiesto e quando. Inoltre, raccogli tutte le risposte e i relativi metadati. potresti memorizzare tutto ciò in un file di testo, ma un file flat renderebbe difficile trovare le informazioni quando ne hai bisogno. Ci sarebbero troppi dati per leggere l'intera cosa in memoria, quindi ogni volta che volevi trovare una domanda o una risposta, dovresti esaminare il file finché non hai trovato quello che stavi cercando. Quando si desidera trovare tutte le domande poste da un determinato utente, è necessario eseguire la scansione dell'intero file. Se vuoi trovare tutte le domande che hanno "bug" come tag, devi eseguire la scansione del file.
Sarebbe terribilmente lento, quindi potresti decidere di accelerare 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 si desidera trovare una domanda, si esegue la ricerca dell'indice delle domande (molto più piccolo), si ottiene la posizione della domanda nel file di dati principale e si passa rapidamente al punto giusto nel file. Sarebbe un grande miglioramento delle prestazioni. In effetti, è praticamente ciò che è un sistema di gestione del database.
Quindi usa un DBMS quando è quello che ti serve. Usalo quando hai molti dati, quando devi essere in grado di accedere a quei dati rapidamente e forse in modi che puoi Prevediamo del tutto sin dall'inizio. Se hai diversi tipi di dati - diversi tipi di record - che sono collegati tra loro, usa un RDBMS in modo da poter relazionare i vari record in modo appropriato.