Quando um banco de dados deve ser preferido para armazenar os dados em vez de armazená-los em um arquivo de texto?
A Wikipedia nos diz que um banco de dados é uma coleção organizada de dados . Por essa medida, seu arquivo de texto é um banco de dados. Ele continua dizendo:
Os dados são normalmente organizados para modelar aspectos relevantes da realidade de uma maneira que ofereça suporte aos processos que exigem essas informações. Por exemplo, modelar a disponibilidade de quartos em hotéis de uma maneira que permita encontrar um hotel com vagas.
Essa parte é subjetiva - não nos diz especificamente como os dados devem ser modelados ou que operações precisam ser otimizadas. Seu arquivo de texto consiste em vários registros distintos, um para cada dia, para que você modele um aspecto da realidade de maneira relevante para o seu problema.
Sei que quando você diz "banco de dados" provavelmente está pensando em algum tipo de sistema de gerenciamento de banco de dados relacional, mas pensar no seu arquivo de texto como um banco de dados muda sua pergunta de "quando devo usar um banco de dados?" para "que tipo de banco de dados devo usar?" Ver as coisas sob essa luz facilita a resposta: use um banco de dados melhor quando o que você possui não atender mais aos seus requisitos.
Se o seu script Python e o arquivo de texto simples funcionarem bem o suficiente, não há necessidade de mudar. Com apenas um novo registro por dia e os computadores ficando mais rápidos a cada ano, suspeito que sua solução atual possa ser viável por muito tempo. Os dados de uma década forneceriam apenas 3650 registros que, uma vez analisados, provavelmente exigiriam menos de 75 kilobytes.
Imagine que, em vez de um pequeno registro por dia, você decidiu registrar todas as perguntas feitas no CodeReview, quem fez e quando. Além disso, você também coleta todas as respostas e os metadados relevantes. Você pode armazenar tudo isso em um arquivo de texto, mas um arquivo simples dificulta a localização de informações quando você precisar. Havia muitos dados para ler a coisa toda na memória; portanto, sempre que você quisesse encontrar uma pergunta ou resposta, teria que verificar o arquivo até encontrar o que estava procurando. Quando você quisesse encontrar todas as perguntas feitas por um determinado usuário, teria que verificar o arquivo inteiro. Se você deseja encontrar todas as perguntas que possuem "bugs" como tag, é necessário verificar o arquivo.
Isso seria terrivelmente lento, então você pode decidir acelerar as coisas criando alguns índices que informam onde procurar no arquivo para encontrar um determinado registro. Você pode ter um índice para perguntas, outro para usuários, um terceiro para respostas e assim por diante. Quando você queria encontrar uma pergunta, pesquisava no índice (muito menor), obtinha a posição da pergunta no arquivo de dados principal e saltava rapidamente para o local certo no arquivo. Isso seria uma grande melhoria de desempenho. Na verdade, isso é basicamente o que é um sistema de gerenciamento de banco de dados.
Portanto, use um DBMS quando for o que você precisa. Use-o quando você tiver muitos dados, quando precisar acessar esses dados rapidamente e talvez de maneiras que você não pode prever completamente desde o início. Se você tiver diferentes tipos de dados - diferentes tipos de registros - conectados entre si, use um RDBMS para poder relacionar os vários registros adequadamente.