Когда следует использовать базу данных для хранения данных, а не для хранения данных в текстовом файле?
Википедия говорит нам, что база данных - это организованная коллекция данных . По этой мере ваш текстовый файл является базой данных. Это говорит:
Данные, как правило, организованы для моделирования соответствующих аспектов реальности таким образом, чтобы поддерживать процессы, требующие этой информации. Например, моделирование наличия номеров в отелях таким образом, чтобы поддерживать поиск отеля с вакансиями.
Эта часть субъективна - она не говорит нам конкретно, как должны быть смоделированы данные или какие операции необходимо оптимизировать. Ваш текстовый файл состоит из нескольких отдельных записей, по одной на каждый день, поэтому вы моделируете аспект реальности таким образом, который соответствует вашей проблеме.
Я понимаю, что когда вы говорите «база данных», вы, вероятно, думаете о какой-то системе управления реляционными базами данных, но представление о вашем текстовом файле как о базе данных меняет ваш вопрос на «когда мне следует использовать базу данных?» на "какую базу данных мне использовать?" Видя вещи в таком свете, легче увидеть ответ: используйте лучшую базу данных, когда та, что у вас больше не соответствует вашим требованиям.
Если ваш скрипт на Python и простой текстовый файл работают достаточно хорошо, вам не нужно ничего менять. Я подозреваю, что текущее решение может быть жизнеспособным в течение длительного времени, поскольку в нем ежедневно регистрируется только одна новая запись, а компьютеры работают быстрее. Данные за десятилетие дадут вам только 3650 записей, которые после анализа, вероятно, потребуют менее 75 килобайт.
Представьте, что вместо одной небольшой записи в день вы решили записывать каждый вопрос, заданный в CodeReview, кто его задавал и когда. Кроме того, вы также собираете все ответы и соответствующие метаданные. Вы можете хранить все это в текстовом файле, но простой файл затруднит поиск информации, когда она вам понадобится. Было бы слишком много данных, чтобы прочитать все это в памяти, поэтому всякий раз, когда вы хотели найти вопрос или ответ, вам приходилось сканировать файл, пока вы не нашли то, что искали. Если вы хотите найти все вопросы, заданные данным пользователем, вам нужно будет просмотреть весь файл. Если вы хотите найти все вопросы, которые имеют «ошибки» в виде тега, вам нужно будет просмотреть файл.
Это будет ужасно медленно, поэтому вы можете решить ускорить процесс, создав несколько индексов, которые сообщают вам, где искать файл, чтобы найти данную запись. У вас может быть индекс для вопросов, другой для пользователей, третий для ответов и так далее. Когда вы хотели найти вопрос, вы искали (гораздо меньший) индекс вопроса, определяли положение вопроса в основном файле данных и быстро переходили к нужному месту в файле. Это было бы большим улучшением производительности. Действительно, это в значительной степени то, что система управления базами данных.
Итак, используйте СУБД, когда это то, что вам нужно. Используйте его, когда у вас много данных, когда вам нужен быстрый доступ к этим данным и, возможно, способами, которые вы не можете предсказать с самого начала. Если у вас есть разные типы данных - разные типы записей - которые связаны друг с другом, используйте СУБД, чтобы вы могли соотносить различные записи соответствующим образом.