LINUX.ORG.RU

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

 , ,


1

6

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

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

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

В итоге пришли к тому, от чего убегали - к SQL. Бугага!

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

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

araks ()

использовать это БД

оговорка по Фрейду?

Zanuda ()

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

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

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

ну и он не нужен обычно.

Вот тут поподробнее пожалуйста, если можно с примерами.

dimgel ★★ ()

Зачем оно нужно, когда есть PostgreSQL?

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

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

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

Joe_Bishop ()

Ну теперь-то сиквелю точно капец. У монги полный набор победителя - транзакции и жабаскрипт.

Vit ★★★★★ ()

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

Но зачем???

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

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

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

Как связаны транзакции и SQL?

Никак. Но в подобных темах традиционно SQL==РСУБД в противовес т.н. «NoSQL», т.е. нереляционным СУБД

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

Как связаны транзакции и SQL?

В данном конкретном случае, поддержка транзакций появилась раньше поддержки sql, которая появится позже.

ashot ★★★ ()

Оно еще живое? Помнится сдуру крутил стек MEAN - редчайшая дичь.

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

Зачем зацикливаться на PostgreSQL?

Любишь приключения?

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

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

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

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

Любишь приключения?

Не люблю зацикливаться и не люблю фанатиков.

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

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

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

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

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

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

Немного не так. На большинстве практических задач нужны разные данные со связями. А монолитные json деревья нужны на меньшинстве.

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

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

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

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

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

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

Ок, погорячился.
Но история, когда там, где понадобится рано или поздно нормальная РСУБД, ставят монгу - типична и смешна.

Shadow ★★★★★ ()

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

anonymous ()

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

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

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

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

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

Знаю про случаи, когда используют для прототипирования, а потом оно так и остаётся потому что «потом всё перепишем». Увы, такое бывает.

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

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

Из поста ТС:

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

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

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

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

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

Один инстанс постгреса + несколько инстансов монги — довольно типичная конфигурация

И кто за что отвечает в такой конфигурации?

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

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

libpq из Postgres умеет работать с базой асинхронно.

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

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

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

anonymous ()

Наконец-то! Теперь можно и в продакшен.

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

кстати, почему решено в nodeca mongo использовать для хранения данных, а не postgresql или mysql к примеру?

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

По той же причине, почему решено использовать ноду - захотелось.

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

Наконец-то! Теперь можно и в продакшен.

С уровнем изоляции Snapshot? Это же почти тоже самое что и Serializable.

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

libpq из Postgres умеет работать с базой асинхронно.

Речь про Си++. libpq - это про Си.

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

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

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

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

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

Для хранения данных, это же очевидно!

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

И кто за что отвечает в такой конфигурации?

сам не пробовал, но адепты CQRS говорят что читать надо из монги, а писать в постгре

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

Охохо, а как всё это синхронить, с помощью собственных костылей?

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

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

slonopotamus ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.