Коли слід віддавати перевагу базі даних для зберігання даних над зберіганням даних у текстовому файлі?
У Вікіпедії йдеться про те, що база даних - це організований збір даних . За цим показником ваш текстовий файл є базою даних. Продовжує говорити:
Дані, як правило, організовуються для моделювання відповідних аспектів реальності таким чином, щоб підтримувати процеси, що вимагають цієї інформації. Наприклад, моделювання наявності номерів у готелях таким чином, щоб підтримувати пошук готелю з вакансіями.
Ця частина є суб'єктивною - вона не говорить нам конкретно про те, як слід моделювати дані чи які операції потрібно оптимізувати. Ваш текстовий файл складається з декількох різних записів, по одному на кожен день, тому ви моделюєте аспект реальності таким чином, що відповідає вашій проблемі.
Я усвідомлюю, що коли ви говорите "база даних", ви, напевно, думаєте про якусь систему управління реляційною базою даних, але думка про ваш текстовий файл як базу даних змінює ваше запитання на "коли я повинен використовувати базу даних?" до "яку базу даних я повинен використовувати?" Бачити речі в такому світлі полегшує зрозуміти відповідь: використовуйте кращу базу даних, коли та, яка у вас є, вже не відповідає вашим вимогам.
Якщо ваш сценарій Python і простий текстовий файл працюють досить добре, міняти їх не потрібно. Маючи лише один новий запис на день і комп'ютери стають швидшими з кожним роком, я підозрюю, що ваше поточне рішення може бути життєздатним протягом тривалого часу. Дані, що стоять за десятиліття, дали б вам лише 3650 записів, які, проаналізувавши, ймовірно, потребуватимуть менше 75 кілобайт.
Уявіть, що замість одного невеликого запису на день ви вирішили записувати кожне запитання, яке задавали на CodeReview, хто його задавав, і коли. Крім того, ви також збираєте всі відповіді та відповідні метадані. Ви можете зберігати все це у текстовому файлі, але плоский файл утрудняє пошук інформації, коли вона вам потрібна. Буде занадто багато даних, щоб прочитати всю річ в пам'яті, тому щоразу, коли ви хочете знайти запитання чи відповідь, вам доведеться сканувати файл, поки ви не знайдете те, що шукали. Коли ви хочете знайти всі запитання, задані певним користувачем, вам доведеться просканувати весь файл. Якщо ви хочете знайти всі питання, які містять "помилки" як тег, вам доведеться просканувати файл.
Це було б жахливо повільно, тому ви можете вирішити пришвидшити справи, побудувавши деякі індекси, які підкажуть, де шукати файл, щоб знайти заданий запис. Ви можете мати індекс для запитань, інший для користувачів, третій для відповідей тощо. Коли ви хочете знайти запитання, ви шукаєте (набагато менший) індекс запитань, знайдіть позицію питання в головному файлі даних та швидко перейдіть на потрібне місце у файлі. Це було б велике покращення продуктивності. Дійсно, це майже що таке система управління базами даних.
Отже, використовуйте СУБД, коли це те, що вам потрібно. Використовуйте його, коли у вас є багато даних, коли вам потрібно мати доступ до цих даних швидко та, можливо, способами, які ви не можете повністю передбачити на самому початку. Якщо у вас є різні типи даних (різні типи записів), які з'єднані один з одним, використовуйте RDBMS, щоб ви могли відповідним чином співвідносити різні записи.