раздел 07
Шпаргалка: как выбрать
Весь курс сводится к одному вопросу - где хранить данные в конкретном случае. Эта страница даёт быстрый ответ: дерево решений, таблицу сравнения и сигналы перехода на следующую ступень.
Дерево решений
Отвечайте по порядку, остановитесь на первом подходящем:
-
Данные должны пережить перезапуск программы? Нет -> переменная в памяти. Готово.
-
Данных мало и они простые (список строк, настройки)? Да, и это таблица -> CSV. Да, и есть вложенность/типы -> JSON-файл.
-
Нужен быстрый поиск, фильтры, частые правки отдельных записей или связи между данными? Да -> база данных. Начните с SQLite.
-
К данным нужен доступ с разных устройств / у многих пользователей одновременно? Да -> серверная или облачная БД (PostgreSQL, Supabase) + API.
-
Это мобильное приложение с реалтаймом или гибкой структурой? Да -> присмотритесь к Firebase / NoSQL.
Таблица: что когда брать
| Ситуация | Решение | | --- | --- | | Промежуточные вычисления, состояние страницы | Переменная | | Лог, заметки, простой список строк | Текстовый файл | | Таблица для Excel, выгрузка, аналитика | CSV | | Настройки, конфиг, данные с вложенностью | JSON | | Прототип с поиском и правками, десктоп/бот | SQLite | | Сайт с пользователями без возни с сервером | Supabase (Postgres в облаке) | | Прод на своём сервере, сложные запросы | PostgreSQL | | Мобайл, реалтайм, гибкая схема | Firebase / MongoDB |
Сигналы «пора на следующую ступень»
- Переменная -> файл: «данные пропадают при перезапуске, а должны оставаться».
- TXT -> CSV/JSON: «у каждой записи появился набор полей, голый текст неудобен».
- CSV -> JSON: «в данных появилась вложенность или важны типы».
- Файл -> база: «поиск тормозит, правки отдельных записей неудобны, пишут одновременно».
- SQLite -> сервер: «несколько серверов/много пользователей пишут разом».
Три правила, которые экономят время
- Берите самый простой способ, которого хватает. Не заводите PostgreSQL ради списка из десяти пунктов.
- Переходите вправо по реальной боли, а не на всякий случай. Сигнал перехода всегда конкретный - тормозит, ломается, не помещается.
- Секреты и доступы - в
.env, не в код и не в git. Пароли от базы и API-ключи никогда не попадают в репозиторий.