MongoDB разонравилась

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

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

Во-вторых, «Монга» до сих пор не умеет блокировать при записи только одну строку в коллекции, лочит всю базу, причём до версии 2.2 было ещё хуже — на записи срабатывала глобальная блокировка. В будущем предполагается блокировка на уровне коллекции, а когда это будет делаться на уровне строки — неизвестно.

Естественно, если кто-то один пишет в базу, остальные ждут — читать и писать нельзя. Кроме того, блокировка на запись имеет приоритет. На производительности, конечно, это сказывается всё не лучшим образом.

Читайте также

Числа из PHP в MongoDB
Не знал, что официальный драйвер Монги для ПХП передаёт числа в Монгу как строки. Долго не понимал почему удаление строк из коллекции срабатывает почти сразу, а не через заданное время.
2013

Комментарии 20

Lex Rivera (lex.io) № 1
Во-первых, видел как база два раза разлетелась и больше не собиралась. Очень неприятно, одну из коллекций спасти не удалось

Довольно частое явление, к сожалению. У меня был один проект на монге, сборщик логов по syslog. Каждый раз как возникали проблемы с дисковой подсистемой/падением VM/etc база была повреждена настолько, что проще было начать с чистого листа.

clops № 3
MongoDB имеет смысл только когда используется Replica Set. Насчёт блокировки — не уверен. Очень шустро работает на ней Workflow процессор на ~2500000 операций в день, атомарные операции выполняю с помощью FindAndModify.
Евгений Степанищев (bolknote.ru) автор № 5
MongoDB имеет смысл только когда используется Replica Set.

У нас используется.

Насчёт блокировки — не уверен

В чём не уверен? Я там ссылку на документацию дал.

Очень шустро работает на ней Workflow процессор на ~2500000 операций в день, атомарные операции выполняю с помощью FindAndModify.

Нагрузка нагрузке рознь. Если операции записи редкие — неудивительно.

Павел № 8
а HandlerSockets не хотите попробовать?
Евгений Степанищев (bolknote.ru) автор № 10
а HandlerSockets не хотите попробовать?

Не знаю пока, там же все недостатки MySQL в полный рост — отсутствие нормальной мастер↔мастер репликации, например. Вот думаем про Elliptics.

Павел № 11
Комментарий для Евгения Степанищева:

Сергей Аверин из badoo только что рассказывал как они хранят сессии и проч. в handlersockets. По времени в одном из кейсов получается даже сопоставимо с мемкешем. И да, mysql master-master у них вроде как при этом используется. В общем если уже есть инфраструктура mysql то вполне вариант попробовать.
mixael.ru № 12
Женя, поговори про элиптикс с бывшими коллегами из Яндекса. Мы тут его конкретно наелись. Т.е. он конечно работает, но его нужно уметь.
С монгой тоже не все гладко, но не на столько
Евгений Степанищев (bolknote.ru) автор № 13
Регулярно говорю :) С Лёней Мовсесяном, например :) Мы уже тоже успели понаступать на грабли, но бывшие коллеги не дают опустить руки.