весрии 4.2 многоузловый).
Только буковка I - немного не та I, которая в PG возможна (не SSI). Хотя должна удовлетворять SI. Кажется, в моих задачах всегда хватало SI.
И, судя по тестам jepsen, SI не гарантирован пока что (я так понял, что там просто баги разработчиков, связанные с повторами, поправьте, если не так).
Я работал с mongodb, когда были весрии 2.*. Те версии отбили всё желание иметь с этой базой что-либо общего, потому что рано или поздно нужны были транзакции, приходилось их там реализовывать из приложения.
Как пользователя этой БД мне не нравилось следующее:
1. отсутствие схемы (попробуйте написать там запросы, который сделает хоть что-то хотя бы тривиальное, когда у вас внезапно в поле хранится строка, массив, objectId, null)
Да, там вроде в версии 3.* добавили ограничения на тип и можно даже схему указать (поправьте, если не так).
2. отсутствие join-ов.
Да, где-то в 3.* добавили join-ы по object_id, но в жизни не всегда так приходиться join-ить.
Если вы думаете, что хотеть join-ить в mongodb - это неправильно продуманная схема, то вы ошибаетесь, когда посмотрите на максимальный размер документа. Он не является неограниченным.
3. монструозность запросов
Попробуйте написать нетривиальный запрос в mongodb и потом такой же запрос в postregsql. Разница налицо.
У меня в pg были запросы на 3 экрана, думаю, что в mongodb написать аналогичный запрос - это всё равно, что написать книгу (да, преувеличиваю, но иначе читать скучно 😊).
4. отсутствие транзакции
Несколько раз думал, что транзакции не нужны в проекте и брал эту БД, но проект растёт, изменяется и рано или поздно они нужны. У меня было так 2 раза.
Да, в 4.* их добавили. Да, там баги есть, но это потому что транзакциям года 1.5-2 жизни. Скорей всего те гарантии, которые дают в mongodb мне бы хватило, это потому что у меня проекты такие. Совершенно точно понятно, что это далеко не для всех.
Кто знает кейсы использования этой СУБД?)
Из кейсов: хранение кэша. Без какой либо логики. ВСе данные о пользователях хранились как правило в бд рядом. Например, мускул или постгрес. Монго использовали только как хранилище кэша, который не страшно потерять
Обсуждают сегодня