Допоможіть розібратися. Яка відмінність транзакцій в MongoDB та реляційних базах?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Так історично склалось, що в порівнянні між реляційними і NoSQL базами, реляційні вигравали за рахунок ACID транзакцій, а NoSQL давали можливість скейлитись горизонтально.

Починаючи з версії 4.2, в MongoDB з’явились мультидокументні транзакції, які можуть бути виконані на декількох шардах.

Виходить, що в реляційних базах жодних ключових переваг не залишилось ( крім чіткої структури) ? Чи все таки є підводні камені в транзакціях у Монго?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Реляційні бази даних мають серйозну перевагу не тільки в плані транзакцій, а і у плані зручності написання SQL-запитів, особливо для агрегацій, віконних функцій і т.д.

Виходить, що в реляційних базах жодних ключових переваг не залишилось ( крім чіткої структури) ?

Не знаю як кому, але я б сказав навпаки — у монги немає особливих переваг, окрім згаданого вами горизонтального масштабування, і можливості вкидати і витягувати неструктуровані дані.

Наприклад, якщо усю сторінку форума на ДОУ зберігати в MondoDB, то це можна зробити в одному JSON-документі. Зручність полягає в тому, що MondoDB нативно підтримує JSON, тому його не прийдеться додатково парсити. Тобто якщо задача для бекенда полягає просто у збереженні і видачі таких документів, то MondoDB має тут невелику перевагу.

Але коли є потреба, наприклад, в отриманні останніх коментарів з усіх форумів, чи останніх коментарів конкретного користувача, чи потрібно порахувати усі коментарі у конкретного користувача і т.д., то тут реляційні бази значно зручніші.

Ще одне згадав. У монги, здається, немає такої корисної фічі як foreign keys. Тобто коли треба гарантувати цілісність даних, то тут, звичайно ж, монгу протипоказано використовувати.

Дякую, корисно. Але в чому ж таки різниця в транзакціях монги і реляційних БД ? :)

mongo must die
long live RDBMS!

вище написали, у монго вузька спеціалізауція на json документи

концептуально транзакции монги не отличаются от транзакций промышленных реляционных СУБД — транзакции монги так же соответствуют требованиям ACID
www.mongodb.com/basics/acid-transactions
разница может быть в том как оно устроено под капотом. спецом по монге не являюсь, так что не подскажу как оно в монге реализовано. но например в SQL Server оно реализовано через блокировки и журнал транзакций.

Підписатись на коментарі