раздел 07

Шпаргалка: как выбрать

Весь курс сводится к одному вопросу - где хранить данные в конкретном случае. Эта страница даёт быстрый ответ: дерево решений, таблицу сравнения и сигналы перехода на следующую ступень.

Дерево решений

Отвечайте по порядку, остановитесь на первом подходящем:

  1. Данные должны пережить перезапуск программы? Нет -> переменная в памяти. Готово.

  2. Данных мало и они простые (список строк, настройки)? Да, и это таблица -> CSV. Да, и есть вложенность/типы -> JSON-файл.

  3. Нужен быстрый поиск, фильтры, частые правки отдельных записей или связи между данными? Да -> база данных. Начните с SQLite.

  4. К данным нужен доступ с разных устройств / у многих пользователей одновременно? Да -> серверная или облачная БД (PostgreSQL, Supabase) + API.

  5. Это мобильное приложение с реалтаймом или гибкой структурой? Да -> присмотритесь к Firebase / NoSQL.

Таблица: что когда брать

| Ситуация | Решение | | --- | --- | | Промежуточные вычисления, состояние страницы | Переменная | | Лог, заметки, простой список строк | Текстовый файл | | Таблица для Excel, выгрузка, аналитика | CSV | | Настройки, конфиг, данные с вложенностью | JSON | | Прототип с поиском и правками, десктоп/бот | SQLite | | Сайт с пользователями без возни с сервером | Supabase (Postgres в облаке) | | Прод на своём сервере, сложные запросы | PostgreSQL | | Мобайл, реалтайм, гибкая схема | Firebase / MongoDB |

Сигналы «пора на следующую ступень»

  • Переменная -> файл: «данные пропадают при перезапуске, а должны оставаться».
  • TXT -> CSV/JSON: «у каждой записи появился набор полей, голый текст неудобен».
  • CSV -> JSON: «в данных появилась вложенность или важны типы».
  • Файл -> база: «поиск тормозит, правки отдельных записей неудобны, пишут одновременно».
  • SQLite -> сервер: «несколько серверов/много пользователей пишут разом».

Три правила, которые экономят время

  1. Берите самый простой способ, которого хватает. Не заводите PostgreSQL ради списка из десяти пунктов.
  2. Переходите вправо по реальной боли, а не на всякий случай. Сигнал перехода всегда конкретный - тормозит, ломается, не помещается.
  3. Секреты и доступы - в .env, не в код и не в git. Пароли от базы и API-ключи никогда не попадают в репозиторий.

Подразделы