В чем преимущество PostgreSQL перед MongoDB
Что проверяют
Умеете ли вы сравнивать базы по свойствам задачи, а не по лозунгам. Заодно проверяют, знаете ли вы, что современный PostgreSQL умеет работать с документами.
Как отвечать
Сильные стороны PostgreSQL:
- строгая схема и ограничения: типы, внешние ключи, проверки. База сама не даёт записать некорректные данные, а не полагается на дисциплину приложения;
- транзакции и целостность: полноценные ACID-транзакции с уровнями изоляции, включая операции над множеством таблиц;
- язык запросов: соединения, оконные функции, общие табличные выражения, агрегаты, зрелый планировщик с честной статистикой;
- гибкость типов:
jsonbзакрывает документный сценарий с индексами, плюс массивы, диапазоны, полнотекстовый поиск и расширения вроде PostGIS и pgvector; - аналитика: сложные отчёты пишутся запросом, без выгрузки данных в отдельный слой.
Что честно сказать про MongoDB: многодокументные транзакции там есть с версии 4.0, схему можно валидировать, а горизонтальное шардирование и репликация встроены и настраиваются проще. Документная модель удобна, когда объект читают и пишут целиком, схема часто меняется, а связей между сущностями мало.
Правило выбора: связанные данные, отчёты, финансовые операции и требования к целостности говорят в пользу PostgreSQL. Слабо связанные документы, изменчивая структура и очень высокая скорость записи с горизонтальным ростом говорят в пользу MongoDB. Начинать почти всегда разумнее с PostgreSQL, потому что jsonb даёт документный сценарий без отказа от реляционных возможностей.
Где спотыкаются
Говорят «в Mongo нет транзакций». Это устаревшее утверждение.
Считают, что PostgreSQL не масштабируется. Реплики, партиционирование и внешние решения существуют, вопрос в сложности, а не в возможности.
Сравнивают скорость вообще, без сценария. Без указания нагрузки и профиля запросов такое сравнение бессмысленно.