Допоможіть розібратися. Яка відмінність транзакцій в MongoDB та реляційних базах?
Так історично склалось, що в порівнянні між реляційними і NoSQL базами, реляційні вигравали за рахунок ACID транзакцій, а NoSQL давали можливість скейлитись горизонтально.
Починаючи з версії 4.2, в MongoDB з’явились мультидокументні транзакції, які можуть бути виконані на декількох шардах.
Виходить, що в реляційних базах жодних ключових переваг не залишилось ( крім чіткої структури) ? Чи все таки є підводні камені в транзакціях у Монго?
6 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівМожно у Jepsen почитать...
Реляційні бази даних мають серйозну перевагу не тільки в плані транзакцій, а і у плані зручності написання SQL-запитів, особливо для агрегацій, віконних функцій і т.д.
Не знаю як кому, але я б сказав навпаки — у монги немає особливих переваг, окрім згаданого вами горизонтального масштабування, і можливості вкидати і витягувати неструктуровані дані.
Наприклад, якщо усю сторінку форума на ДОУ зберігати в MondoDB, то це можна зробити в одному JSON-документі. Зручність полягає в тому, що MondoDB нативно підтримує JSON, тому його не прийдеться додатково парсити. Тобто якщо задача для бекенда полягає просто у збереженні і видачі таких документів, то MondoDB має тут невелику перевагу.
Але коли є потреба, наприклад, в отриманні останніх коментарів з усіх форумів, чи останніх коментарів конкретного користувача, чи потрібно порахувати усі коментарі у конкретного користувача і т.д., то тут реляційні бази значно зручніші.
Ще одне згадав. У монги, здається, немає такої корисної фічі як foreign keys. Тобто коли треба гарантувати цілісність даних, то тут, звичайно ж, монгу протипоказано використовувати.
Дякую, корисно. Але в чому ж таки різниця в транзакціях монги і реляційних БД ? :)
mongo must die
long live RDBMS!
вище написали, у монго вузька спеціалізауція на json документи
концептуально транзакции монги не отличаются от транзакций промышленных реляционных СУБД — транзакции монги так же соответствуют требованиям ACID
www.mongodb.com/basics/acid-transactions
разница может быть в том как оно устроено под капотом. спецом по монге не являюсь, так что не подскажу как оно в монге реализовано. но например в SQL Server оно реализовано через блокировки и журнал транзакций.