RE:NODE
Обзор хостинга

Базы данных6 мин чтения

PostgreSQL или MongoDB: выбирайте по форме данных, а не по моде

Вопрос в том, как выглядят ваши данные и что вам нужно у них спрашивать. Всё остальное — предпочтения.


Обе прекрасны, и обе потянут то, что вы построите. Выбор важен на краях, а края приходят позже, чем ожидаешь, — обычно в первый раз, когда нужно задать вопрос, под который схему не проектировали.

Postgres, когда суть в связях

  • Данные с чёткими сущностями, ссылающимися друг на друга: пользователи, заказы, товары.
  • Всё, где недописанная запись недопустима. Транзакции — именно про это.
  • Запросы, о которых вы пока не думали. SQL хорош в вопросах, которых никто не планировал.
  • Отчётность, агрегация и join-ы по нескольким таблицам.

MongoDB, когда суть в документах

  • Записи, форма которых отличается от одной к другой.
  • Данные, которые читаются и пишутся целиком, в той форме, которую приложение уже использует.
  • Быстрая итерация, когда схема ещё меняется каждую неделю.
  • События и логи, где объём важнее join-ов.

Честный вариант по умолчанию

Если не можете решить — берите Postgres. С JSONB он прекрасно справляется и с документами, когда они нужны, а вот обратное неверно: документное хранилище, от которого требуют реляционного поведения, превращается в join-ы, написанные руками в коде приложения. Цена выбора Postgres, когда его строгость не нужна, куда ниже цены обратной ошибки.