SQLite или Postgres — что взять для первого проекта

Начнём с факта, который ломает интуицию: SQLite — самая распространённая база данных на планете. Она прямо сейчас в твоём телефоне: в мессенджерах, браузере, фотогалерее. Не «игрушечная версия настоящей базы», а промышленная вещь с миллиардами установок.
Так что выбор «SQLite или Postgres» — это не «игрушка против серьёзной». Это выбор, где живут твои данные: в файле рядом с кодом или на отдельном сервере. От ответа зависит, как проект деплоится, сколько стоит и что случится, когда придут пользователи.
Главная разница — файл или сервер
Обе — настоящие реляционные базы данных, обе понимают SQL. Разница в устройстве:
- SQLite — это один файл на диске, например
app.db. Никакого сервера: твоя программа открывает файл напрямую, как документ. Установил библиотеку — база уже есть. - Postgres — это отдельная программа-сервер. Она работает сама по себе, а твой код ходит к ней по сети: подключение, логин, пароль. Сервер может стоять на твоей машине или в облаке.
Из этой одной разницы вырастает всё остальное.
Сравнение по-честному
| Критерий | SQLite | Postgres | |---|---|---| | Установка | не нужна: файл создаётся сам | нужен сервер: свой или облачный | | Где данные | один файл рядом с кодом | на сервере базы | | Несколько приложений сразу | плохо: файл один, писать в него — по очереди | отлично: сервер создан для толпы клиентов | | Деплой на хостинг | ловушка (см. ниже) | штатно: база живёт отдельно от кода | | Цена старта | ноль | ноль (облачные бесплатные тарифы) | | Бэкап | скопировать файл | команда или кнопка в облачной панели | | Права и роли | нет: у кого файл, у того всё | есть: пользователи, доступы, только-чтение |
Ключевая строка — «несколько приложений сразу». В SQLite писать в файл может фактически один процесс за раз, остальные ждут. Для сайта с десятком одновременных пользователей это уже узкое место. Postgres же изначально построен как сервер для многих клиентов одновременно.
Ловушка деплоя, о которой узнают слишком поздно
Классический сценарий: сделал приложение с SQLite, всё работает, задеплоил на Vercel или Netlify — и через день база пустая.
Причина: на serverless-хостингах файловая система временная. Твой код выполняется в одноразовом окружении: запрос обработан — окружение выбросили вместе со всем, что код записал на диск. Файл app.db с данными пользователей просто исчезает. Это не баг хостинга, это устройство serverless: код одноразовый, данные должны жить снаружи.
Отсюда железное правило: данные пользователей — снаружи кода. На serverless-хостинге базой должен быть отдельный сервис, а не файл в проекте.
Кому что подойдёт — прямой ответ
- Скрипт, прототип, локальный инструмент, бот для себя — SQLite. Ноль настройки, база — просто файл, бэкап — копия файла. Тащить сюда сервер — лишняя работа.
- Сайт или приложение с пользователями — Postgres, причём облачный: Supabase, Neon и похожие дают бесплатную базу за пару минут, завести её — короткий гайд. Код деплоится куда угодно, данные живут отдельно и не исчезают.
- Сомневаешься, «а вдруг вырастет» — бери Postgres сразу. Переезд с SQLite потом — это работа: SQL похож, но не идентичен, а главное — надо аккуратно перевезти живые данные. Час настройки сегодня дешевле дня переезда через месяц.
Если совсем в одну строку: локально и для себя — SQLite, в интернете и для людей — Postgres.
SQLite — это несерьёзно для продакшна?
Серьёзно, но в своей нише: приложения, где база живёт рядом с программой, — мобильные, десктопные, встроенные. В вебе с постоянным сервером SQLite тоже работает — но на serverless и при множестве одновременных записей нужен серверный вариант.
Postgres — это сложно?
Сложность переехала в облако. Облачные сервисы прячут установку и настройку: ты регистрируешься, жмёшь «создать проект» — получаешь готовую базу, панель с таблицами и строку подключения. Дальше это тот же SQL.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





