Стоит ли использовать MongDB вместо PostgreSQL?

Здравствуй, Тостер!
Я до этого всегда работал только с PostgreSQL. Но недавно встала задача, где нужно хранить сотни различных структур данных. У структуры может быть от 1 до ~100 элементов, любых стандартных типов. Существует высокая вероятность того, что запись и чтение данных может происходить одновременно. Так же структура может меняться в течении её жизни и это не должно приводить к долгим тормозам базы.
Так вот, почитав описание MongoDB, я было обрадовался - вот оно счастье! Но когда дошел до отзывов... Там так часто ругаются на Mongo, особенно в крупных проектах, что у меня появились серьезные сомнения. Стоит ли мне использовать MongoDB или все же старый добрый PostgreSQL со связями?
  • Вопрос задан
  • 1830 просмотров
Решения вопроса 3
@lega
Там так часто ругаются на Mongo, особенно в крупных проектах, что у меня появились серьезные сомнения.
Это просто инструмент который имеет свои преимущества и не достатки, они либо не умеют его готовить, либо выбрали не правильный инструмент.

А вот в крупных компаниях оно успешно используется: Google, Yandex, SAP, Facebook, Cisco, Adobe...
https://www.mongodb.com/who-uses-mongodb

Так же umputun и @bobuk в одном из своих подкастов сделали вывод, что монги хватает на 95%* (веб) проектов.

Вы можете сделать мини-проект на монге, что-б пощупать и понять подходит оно или нет.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Не совсем. Слишком велики концептуальные различия.

Там так часто ругаются на Mongo, особенно в крупных проектах, что у меня появились серьезные сомнения.


Тут ругать надо дурных разработчиков, которые берут диковинку и начинают пытаться свой опыт применить к новым подходам (на самом деле не особо новым). Монга замечательна, но оно вроде как выглядит просто, а по факту вам надо уметь выделять агрегаты транзакций и паковать оный в виде документа. Тогда все круто. Но делать это умеет небольшой процент разработчиков, потому со времением появляются кастыли, попытки впихнуть связи между объектами, и как следствие - крики об одсутствии транзакций (они не нужны если мы работаем только с одним документом за раз - там нам атомарность гарантируется).

В целом по вашему описанию монга подходит хорошо, но рекомендую все же более чательно почитать об агрегатах в контексте монги.

Стоит ли мне использовать MongoDB или все же старый добрый PostgreSQL со связями?


Есть еще вариант. С версии 9.4 postgresql тоже умеет jsonb, хоть и не так удобно.
Ответ написан
terrier
@terrier
Существует высокая вероятность того, что запись и чтение данных может происходить одновременно.

Ну и как вам понравится уровень изоляции Read Uncommited в таком случае?

Плюс к тому, атомарность гарантируется только тогда, когда вы в одной операции обращаетесь только к одному документу - иначе попрощайтесь с транзакциями. Гарантировать, что это условие будет соблюдаться абсолютно всегда в будущем системы - это очень сильно.

Про Durability в MongoDB можно даже не начинать, как говорится "Вы вполне можете использовать MongoDB, если ваши данные не очень ценны. С другой стороны, если ваши данные не очень ценны, вы также можете писать их в  /dev/null".

Действительно jsonb постгресовый оптимальный выход в данном случае
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Изменения структуры моделей уже давно не проблема тк все используют миграции.
Или на уровне фремворка - тогда получаем консистентность по коду и данным
или на уровне СУБД - в виде набора sql скриптов для изменения БД
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы