PostgreSQL или MySQL для бизнеса: что выбрать при новом проекте
PostgreSQL и MySQL - две самые популярные реляционные базы данных для веб-проектов. Выбор делается на старте разработки и влияет на стоимость хостинга, скорость найма разработчиков, возможности аналитики и сложность миграции через 2-3 года. Для владельца бизнеса это не «техническая деталь», а решение уровня «Excel или CRM»: ошибка на этапе ТЗ обходится дороже, чем час обсуждения с подрядчиком до подписания договора.
- MySQL - стандарт для WordPress, PHP-хостингов и типовых интернет-магазинов
- PostgreSQL - чаще выбирают для Django, SaaS, сложной аналитики и строгих правил данных
- Обе - SQL-базы: заказы, клиенты, товары хранятся в таблицах со связями
- Главный критерий - не «что моднее», а стек проекта, бюджет хостинга и планы роста
- Смена БД позже - возможна, но стоит $3 000 - $30 000+ и 2-8 недель работы
- Риск - выбрать PostgreSQL «на вырост» для простого лендинга или MySQL для сложной платформы
PostgreSQL и MySQL простыми словами
MySQL и PostgreSQL - программы на сервере, которые хранят данные бизнеса в таблицах: клиенты, заказы, товары, счета, логи. Сайт и CRM не пишут данные в файлы HTML - они отправляют команды на языке SQL, а база отвечает строками и числами.
Обе системы:
- поддерживают миллионы записей при правильной настройке;
- делают бэкапы в виде
.sql-файла; - работают с PHP, Python, Node.js и любыми современными фреймворками;
- требуют отдельного хостинга или VPS - это не «папка на FTP».
MySQL исторически доминирует на shared-хостинге и в CMS: WordPress, OpenCart, Bitrix, Laravel «из коробки» часто идут с MySQL. Подробнее о том, где лежат заказы и пользователи - в статье про MySQL простыми словами.
PostgreSQL чаще ставят на VPS и облако, его по умолчанию рекомендуют Django/Python и многие SaaS-архитектуры. Сильные стороны - строгая целостность данных, работа с JSON, геоданными, полнотекстовым поиском и сложными отчётами.
| Критерий | MySQL | PostgreSQL |
|---|---|---|
| Типичный стек | WordPress, PHP, Bitrix, OpenCart | Django, FastAPI, Ruby on Rails, enterprise |
| Хостинг | Есть почти на любом тарифе от $3/мес | Часто VPS/облако от $10-20/мес |
| Порог входа для разработчика | Ниже, больше специалистов на рынке | Выше, но достаточно для Python-стека |
| Целостность данных | Гибче, быстрее на простых схемах | Строже: меньше «тихих» ошибок |
| JSON и гибкие поля | Есть (с версии 8) | Сильнее из коробки |
| Аналитика и отчёты | Хорошо для типовых задач | Лучше для сложных JOIN и оконных функций |
| Лицензия | Open source (Oracle) / MariaDB | Open source (PostgreSQL License) |
Когда выбирать MySQL
MySQL - разумный выбор по умолчанию, если проект не выходит за рамки типового веба:
WordPress, WooCommerce, Bitrix, OpenCart
CMS и движки магазинов заточены под MySQL. Хостинг с одной кнопкой «Установить WordPress» почти всегда означает MySQL или MariaDB (совместимый форк). Менять БД «на PostgreSQL ради моды» - лишние риски без выгоды.
Ограниченный бюджет на инфраструктуру
На shared-хостинге MySQL включён в тариф. PostgreSQL часто требует VPS, managed DB или облачный инстанс - это +$10-50/мес и иногда отдельная строка в смете.
Команда и подрядчик на PHP
PHP-разработчики и агентства массово работают с MySQL. Меньше сюрпризов при смене подрядчика, проще найти техподдержку на локальном рынке.
Простая схема данных
Каталог до 50 000 SKU, заказы, пользователи, блог, формы - MySQL справляется годами. Узкое место чаще в коде, кеше и хостинге, а не в выборе СУБД.
Сигналы «MySQL достаточно»:
- сайт на PHP и WordPress;
- нет требований к сложной аналитике внутри БД;
- бюджет хостинга до $30-50/мес;
- команда не планирует миграцию на Django в ближайший год.
Когда выбирать PostgreSQL
PostgreSQL оправдан, когда данные - ядро продукта, а не «хранилище для CMS»:
Кастомная платформа на Python/Django
Django официально рекомендует PostgreSQL. ORM, миграции, полнотекстовый поиск, JSONField, PostGIS для карт - всё это лучше работает с PostgreSQL. На MySQL Django тоже запустится, но часть возможностей урежется или потребует костылей.
Сложная бизнес-логика и строгие правила
Несколько складов, мультивалютность, сложные скидки, approval-flow, audit log «кто изменил сумму» - PostgreSQL жёстче следит за целостностью. Меньше ситуаций «заказ без позиций» или «два менеджера перезаписали одну ячейку».
Аналитика, отчёты, BI внутри БД
Если директор хочет ответы уровня «маржа по регионам с учётом возвратов за 18 месяцев» без выгрузки в Excel каждую неделю - PostgreSQL удобнее для сложных SQL-запросов, оконных функций и материализованных представлений.
JSON, интеграции, event log
SaaS, API-first продукты, логирование событий, гибкие атрибуты товаров - PostgreSQL сильнее работает с полуструктурированными данными. MySQL догнал часть возможностей, но экосистема и документация для JSON-задач у PostgreSQL богаче.
Планы масштабирования и несколько сервисов
Микросервисы, отдельный сервис аналитики, репликация read-only для отчётов - PostgreSQL чаще выбирают в архитектурах с ростом. Это не обязательство «сразу на Kubernetes», но запас по гибкости выше.
Сигналы «нужен PostgreSQL»:
- разработка на Django, FastAPI, Rails с кастомной логикой;
- e-commerce или B2B-портал без готовой CMS;
- требования к audit trail, ролям, сложным связям;
- продукт планируется жить 5+ лет с наращиванием функций.
Сравнение по сценариям бизнеса
| Сценарий | Рекомендация | Почему |
|---|---|---|
| Корпоративный сайт на WordPress | MySQL / MariaDB | Стандарт CMS, дешёвый хостинг |
| Интернет-магазин на OpenCart / Bitrix | MySQL | Совместимость, подрядчики, плагины |
| MVP SaaS на Django | PostgreSQL | Стек, JSON, миграции, масштаб |
| Маркетплейс с кастомной логикой | PostgreSQL | Сложные связи, транзакции, отчёты |
| Лендинг + CRM через Zapier | БД CRM, не ваш выбор | Сайт может обойтись без своей БД |
| Миграция с WP на Python | PostgreSQL | Логичный шаг вместе со сменой стека |
| Стартап «проверим идею за 2 недели» | MySQL на дешёвом VPS или PostgreSQL на managed DB | Важнее скорость, чем спор MySQL vs PG |
Правило для директора: спросите подрядчика «какой стек вы рекомендуете и почему», а не «что лучше в интернете». Ответ «MySQL, потому что WordPress» и «PostgreSQL, потому что Django» - оба нормальные, если они привязаны к вашему проекту.
Хостинг, стоимость и эксплуатация
MySQL
- Shared-хостинг - часто $3-15/мес с phpMyAdmin и автобэкапом;
- VPS - MySQL бесплатен, платите за сервер $5-40/мес;
- Managed MySQL (AWS RDS, DigitalOcean) - от $15/мес, меньше возни с обновлениями.
PostgreSQL
- Shared-хостинг - редко; ищите «PostgreSQL hosting» или VPS;
- VPS + self-hosted - $10-40/мес, нужен админ или DevOps на поддержку;
- Managed PostgreSQL - от $15-25/мес, удобно для продакшена без своего DBA.
| Статья расходов | MySQL (типично) | PostgreSQL (типично) |
|---|---|---|
| Хостинг на старте | $0-15/мес (в тарифе) | $15-40/мес |
| Бэкапы | В панели хостинга | Настроить явно или managed |
| Поддержка | Любой PHP-фрилансер | Чаще Python/backend-специалист |
| Миграция при росте | На PostgreSQL: $5 000-20 000 | На MySQL реже, но возможна |
Скрытые расходы - не лицензия (обе open source), а время команды: неправильные индексы, отсутствие бэкапов, один пароль на все проекты. Это одинаково опасно для MySQL и PostgreSQL.
Что спросить у подрядчика до старта
- Какой фреймворк и CMS? WordPress → MySQL. Django → PostgreSQL. Несовпадение - красный флаг.
- Где будет жить БД? Shared, VPS, managed cloud - и кто делает бэкапы.
- План миграции данных - если уже есть Excel или старая БД, как перенесут.
- Версия СУБД - MySQL 8+ или MariaDB 10.6+, PostgreSQL 15+; не 5.7 «потому что на хостинге так».
- Можно ли сменить БД через 2 года? - ответ «да, но дорого» честнее, чем «никогда не понадобится».
Зафиксируйте выбор в техническом задании одной строкой: «СУБД: PostgreSQL 16 на managed DigitalOcean» или «MySQL 8, совместимость с WordPress 6.x». Это снимает споры при приёмке.
Итог: практичная схема выбора
WordPress / PHP / готовая CMS → MySQL (или MariaDB)
Django / FastAPI / кастомный SaaS → PostgreSQL
Не знаете стек, бюджет <$20/мес → MySQL на проверенном хостинге
Сложные данные, долгий продукт → PostgreSQL
MySQL - правильный выбор для типового сайта и магазина на популярных CMS: дешевле, проще, больше хостингов и подрядчиков. PostgreSQL - для продуктов, где база данных - часть конкурентного преимущества: кастомная логика, аналитика, строгие правила, Python-стек.
Не выбирайте PostgreSQL «на будущее» для блога на WordPress - переплатите за инфраструктуру и усложните поддержку. Не выбирайте MySQL «потому что дешевле» для SaaS на Django - получите ограничения и технический долг с первого спринта.
Обсудите выбор до подписания договора на 6 месяцев разработки. Смена СУБД после запуска - не катастрофа, но это всегда отдельный проект с риском для данных и SEO.
Часто задаваемые вопросы
Можно ли потом перейти с MySQL на PostgreSQL?
Да, но это миграция. Экспорт схемы и данных, правка типов полей, тесты, простой на ночь или выходные. Бюджет $3 000 - $30 000+ и 2-8 недель в зависимости от объёма. Если вы уверены в переходе на Django через год - логичнее сразу заложить PostgreSQL, чем дважды платить за перенос.
Что выбирают WordPress и Laravel по умолчанию?
WordPress - MySQL или MariaDB; другой вариант на типовом хостинге почти не встречается. Laravel официально поддерживает MySQL, PostgreSQL, SQLite и SQL Server - выбор за командой. Для Laravel на дешёвом shared-хостинге чаще MySQL; для API и SaaS на VPS - всё чаще PostgreSQL.
PostgreSQL обязателен для сложной аналитики?
Нет, но удобнее. Сложные отчёты можно строить поверх MySQL, выгружать в BI (Metabase, Power BI) или в Python с pandas. PostgreSQL выигрывает, когда тяжёлая аналитика живёт в той же БД, что и транзакции, или нужны продвинутые SQL-функции без отдельного хранилища.
Сколько стоит хостинг PostgreSQL vs MySQL?
MySQL на shared - часто $0-15/мес (включено). PostgreSQL на managed - обычно $15-40/мес на старте. Разница $100-300/год - мало по сравнению со стоимостью разработки, но заметно для «сайта-визитки». Для продукта с выручкой разница несущественна; для MVP на WordPress - MySQL экономичнее.
Что если команда знает только MySQL?
Для WordPress и PHP - не проблема. Для Django/SaaS - ищите команду с опытом PostgreSQL или закладывайте обучение и managed-хостинг с мониторингом. Запускать PostgreSQL «вслепую» без бэкапов и без понимания миграций - рискованнее, чем осознанный MySQL на зрелом стеке. Главное - честная оценка компетенций, а не название СУБД в резюме.