LINUX.ORG.RU

В MongoDB 4.0 появилась поддержка транзакций

 , ,


1

6

Состоялся релиз новой версии NoSQL СУБД MongoDB. В новой версии разработчики добавили то, чего клиенты ждали долгие годы — транзакционность на уровне многих документов с уровнем изоляции Snapshot. Отныне разработчикам не нужно писать дополнительный код, который будет обеспечивать консистентность базы данных. Тем самым MongoDB убрала самый главный недостаток, который мешал многим разработчикам использовать эту СУБД в своих проектах.

Пока транзакции возможны только в режиме replica-set. Чтобы получить преимущества транзакций внутри шардированного кластера, нужно подождать версии 4.2.

>>> Подробности

Ответ на: комментарий от FilosofeM

Это путь любого NoSQL. Как-то почитывал статейку чувака, который для своего проекта «изобрел» файловую БД. Ох уж он заливался соловьем про скорость чтения, простоту и элегантность, «не то, что в реляционных». Спустя два месяца он свой велосипед выкинул и поставил человеческий постгрес.

araks ()

интересно что с производительностью при транзакциях?

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

Joe_Bishop ()
Ответ на: комментарий от dimgel

неверно выразился, имел ввиду что при ручном сохранении консистентности оверхед получается минимальным, обычно тупо сохранение каких-то данных в WAL, а нужда в приведении данных в норм состояние штука довольно редкая

а с транзакциями какие-то адские ухищрения получаются, особенно в случае уплывающих на барже ДЦ

Joe_Bishop ()

появилась поддержка транзакций

Но зачем???

главный недостаток, который мешал многим разработчикам использовать эту СУБД в своих проектах.

А это точно про поддержку транзакций?

nisemax ()
Ответ на: комментарий от Joe_Bishop

при ручном сохранении консистентности оверхед получается минимальным

Оверхед по времени? А по времени разработки? А ведь ещё и ошибка в ручном откате транзакции может возникнуть...

Tanger ★★★★★ ()
Ответ на: комментарий от bigfrogg

Никак, просто монга у местных — это такая модная хипстерская штука, а это априори плохо. В то же время местный прыщунок знает, что транзакции есть в РСУБД, в старой немодной нехипстерской штуке, а это априори что-то хорошее.

На вопрос, где уместно применять монгу, а где — постгрес, у фанатичного прыщунка есть простой ответ: постгрес — везде (потому что это старая проверенная технология дидов), а монгу — нигде (потому что это модная хипстерская шняга для жс-макак). Вот такое примерно представление у комментирующих тут.

env ★★ ()
Ответ на: комментарий от araks

А он там не писал изменилась ли у него структура данных? Так-то с простой структурой типа key:value ничего лучше файловой бд в мире нет и не предвидится в ближайшие полтора столетия. К тому же, можно gzip'ить и экономить место до 10 раз - в постгресе индексы по 3 из 10 полей занимают столько же места, сколько сами данные. Тут ты вспомнишь про кликхаус и будешь прав - по скорости чтения он быстрее постгреса, даже сжатие есть. Но все равно на файлах быстрее.

dnb ()
Ответ на: комментарий от Shadow

На большинстве практических задач

Очень сильное заявление. Вообще-то юзкейсы монги несколько отличаются от юзкейсов постгреса (и их пересечение очень небольшое). Один инстанс постгреса + несколько инстансов монги — довольно типичная конфигурация.

env ★★ ()

Там асинхронный клиент уже сделали на C++ или все так же - каждый сам реализует бинарный протокол общения с базой (который, к счастью, довольно прост)? Когда я последний раз интересовался Монгой (лет 8-10 назад) они реализовывали 3-й по счету вариант C++ драйвера и в нем не было поддержки асинхронного общения с базой (хотя в Java и, кажется даже, в JS уже были, в общем у всех, кроме родного для монги языка разработки).

anonymous ()
Ответ на: комментарий от anonymous

Там асинхронный клиент уже сделали на C++ или все так же - каждый сам реализует бинарный протокол общения с базой

А для того же Постгреса такой клиент есть?..

anonymous ()
Ответ на: комментарий от sleeply4cat

Постойте, там не было транзакций? А для чего оно тогда нужно было?

Из поста ТС:

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

Wizard_ ★★★★★ ()
Последнее исправление: Wizard_ (всего исправлений: 1)
Ответ на: комментарий от i3draven

Очевидно это зависит уметете ли вы органиловывать данные в отличном от табличного представлении.

Судя по вопросу - не умеете => ничего не даст.

grim ★★★★ ()
Ответ на: комментарий от sleeply4cat

Постойте, там не было транзакций? А для чего оно тогда нужно было?

Были атомарные изменения документа. Теперь сделали атомарность при изменении нескольких документов. Раньше для этого нужно было писать код самостоятельно, пользуясь атомарностью изменения одного документа.

anonymous ()
Ответ на: комментарий от i3draven

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

Для твоей поделки Монга вообще не нужна. Её применяют для более серьёзных проектов.

Rodegast ★★★★★ ()
Ответ на: комментарий от foror

А никак. Или сначала сделают commit в базу и тогда потенциально дважды мессагу обрабатывают или сначала помечают мессагу обработанной и тогда могут продолбать апдейт базы.

slonopotamus ()