Quand faut-il préférer une base de données pour le stockage des données au stockage des données dans un fichier texte?
Wikipédia nous dit que base de données est une collection organisée de données . Par cette mesure, votre fichier texte est une base de données. Il poursuit en disant:
Les données sont généralement organisées pour modéliser les aspects pertinents de la réalité d'une manière qui prend en charge les processus nécessitant ces informations. Par exemple, modéliser la disponibilité des chambres dans les hôtels de manière à faciliter la recherche d'un hôtel avec des places libres.
Cette partie est subjective - elle ne nous dit pas spécifiquement comment les données doivent être modélisées ou quelles opérations doivent être optimisées. Votre fichier texte se compose d'un certain nombre d'enregistrements distincts, un pour chaque jour, de sorte que vous modélisez un aspect de la réalité d'une manière adaptée à votre problème.
Je me rends compte que lorsque vous dites "base de données", vous pensez probablement à une sorte de système de gestion de base de données relationnelle, mais penser à votre fichier texte comme une base de données change votre question de "quand devrais-je utiliser une base de données?" à "quel type de base de données dois-je utiliser?" Voir les choses sous cet angle rend la réponse plus facile à voir: utilisez une meilleure base de données lorsque celle que vous avez ne répond plus à vos besoins.
Si votre script Python et votre fichier texte simple fonctionnent assez bien, il n'est pas nécessaire de le modifier. Avec un seul nouveau record par jour et des ordinateurs de plus en plus rapides chaque année, je soupçonne que votre solution actuelle pourrait être viable à long terme. Une décennie de données ne vous donnerait que 3650 enregistrements qui, une fois analysés, nécessiteraient probablement moins de 75 kilo-octets.
Imaginez qu'au lieu d'un petit enregistrement par jour, vous décidiez d'enregistrer toutes les questions posées sur CodeReview, qui les a posées et quand. De plus, vous collectez également toutes les réponses et les métadonnées pertinentes. Vous pouvez stocker tout cela dans un fichier texte, mais un fichier plat rendrait difficile la recherche d'informations lorsque vous en aviez besoin. Il y aurait trop de données pour lire le tout dans la mémoire, donc chaque fois que vous vouliez trouver une question ou une réponse, vous deviez parcourir le fichier jusqu'à ce que vous trouviez ce que vous cherchiez. Lorsque vous souhaitez trouver toutes les questions posées par un utilisateur donné, vous devez parcourir l'intégralité du fichier. Si vous souhaitez trouver toutes les questions qui ont des "bogues" comme balise, vous devrez parcourir le fichier.
Ce serait horriblement lent, vous pouvez donc décider d'accélérer les choses en créant des index qui vous indiquent où chercher dans le fichier pour trouver un enregistrement donné. Vous pouvez avoir un index pour les questions, un autre pour les utilisateurs, un troisième pour les réponses, etc. Lorsque vous vouliez trouver une question, vous recherchiez l'index de questions (beaucoup plus petit), obteniez la position de la question dans le fichier de données principal et sautiez rapidement au bon endroit dans le fichier. Ce serait une grande amélioration des performances. En effet, c'est à peu près ce qu'est un système de gestion de base de données.
Alors, utilisez un SGBD quand c'est ce dont vous avez besoin. Utilisez-le lorsque vous avez beaucoup de données, lorsque vous devez pouvoir accéder à ces données rapidement et peut-être d'une manière que vous ne pouvez pas entièrement prévoir au départ. Si vous avez différents types de données - différents types d'enregistrements - qui sont connectés les uns aux autres, utilisez un SGBDR afin de pouvoir relier les différents enregistrements de manière appropriée.