Множественные обновления в MongoDB с изоляцией и атомарностью

В случае, если мы хотим выполнить несколько операций обновления, будучи атомарными и изолированными в MongoDB, чтобы другие процессы или потоки не получали данные, пока они находятся в процессе. Мне известно о том, что атомарность и изоляция поддерживаются только на уровне документа, а также блокировки поддерживаются на уровне базы данных. У меня есть следующие запросы в приведенном выше случае:

  • Есть ли способ, которым мы можем делать такие множественные обновления изолированно, в пакетном режиме, поскольку «$isolated» не работает для кластера, более того, findAndModify() работает для одного документа?
  • Как мы можем выполнить контроль параллелизма для достижения вышеуказанного случая?
  • Можем ли мы использовать здесь двухфазную фиксацию, поддерживая транзакцию, будет ли она выполняться изолированно?
  • Во время изучения я нашел MongoMVCC для управления параллельным доступом к нескольким версиям, если кто-то использовал его, поделитесь своим опытом в отношении вышеуказанного варианта использования.

person user2834791    schedule 01.10.2013    source источник
comment
Я думаю, что суть моего ответа ниже заключается в том, что если вы хотите ACID, вам нужна технология ACID.   -  person Sammaye    schedule 01.10.2013


Ответы (1)


Есть ли способ сделать такие множественные обновления изолированно, в пакетном режиме, поскольку $isloated не работает для сегмента, более того, findAndModify() работает для одного документа?

Нет, $isolated ближе всего

Как мы можем выполнить контроль параллелизма для достижения вышеуказанного случая?

Вы не можете, собственный параллелизм MongoDB работает, отделяя I от ACID.

Можем ли мы использовать здесь двухфазную фиксацию, поддерживая здесь транзакцию, будет ли она выполняться изолированно?

Двухфазная фиксация, не являющаяся изолированной транзакцией на стороне сервера, не будет работать.

Во время изучения я нашел MongoMVCC для управления параллельным доступом к нескольким версиям, если кто-то использовал его, поделитесь своим опытом в отношении вышеуказанного варианта использования.

Это написано на Java поверх MongoDB, на самом деле это не сама MongoDB и не может заменить I в ACID. Также MVCC больше относится к базам данных без блокировки, чем к изолированным операциям.

person Sammaye    schedule 01.10.2013