Базы данных6 мин чтения
PostgreSQL или MongoDB: выбирайте по форме данных, а не по моде
Вопрос в том, как выглядят ваши данные и что вам нужно у них спрашивать. Всё остальное — предпочтения.
Обе прекрасны, и обе потянут то, что вы построите. Выбор важен на краях, а края приходят позже, чем ожидаешь, — обычно в первый раз, когда нужно задать вопрос, под который схему не проектировали.
Postgres, когда суть в связях
- Данные с чёткими сущностями, ссылающимися друг на друга: пользователи, заказы, товары.
- Всё, где недописанная запись недопустима. Транзакции — именно про это.
- Запросы, о которых вы пока не думали. SQL хорош в вопросах, которых никто не планировал.
- Отчётность, агрегация и join-ы по нескольким таблицам.
MongoDB, когда суть в документах
- Записи, форма которых отличается от одной к другой.
- Данные, которые читаются и пишутся целиком, в той форме, которую приложение уже использует.
- Быстрая итерация, когда схема ещё меняется каждую неделю.
- События и логи, где объём важнее join-ов.
Честный вариант по умолчанию
Если не можете решить — берите Postgres. С JSONB он прекрасно справляется и с документами, когда они нужны, а вот обратное неверно: документное хранилище, от которого требуют реляционного поведения, превращается в join-ы, написанные руками в коде приложения. Цена выбора Postgres, когда его строгость не нужна, куда ниже цены обратной ошибки.