2013-09-18 2 views
0

Реферирование this article о выполнении две фазы фиксации с MongoDB:Цель «начального» состояния в MongoDB двухфазного совершает

Какова цель «первоначального» состояния сделки? Почему бы вам просто не вставить свой документ транзакции в состояние «ожидающее рассмотрения» и сохранить обратную поездку в базу данных?

+0

'initial' обозначает транзакцию, которая еще не запущена, а' pending' обозначает транзакцию. Речь идет о том, какие транзакции вам нужно откатить даже в случае сбоя по любой причине и точно, что вам нужно сделать, чтобы откатить их обратно, если вам не нужно откатывать начальные транзакции в занятой системе, тогда вы можете сэкономить некоторую нагрузку , – Sammaye

ответ

0

Если существует несколько приложений, выполняющих одну и ту же транзакцию, как описано ниже в the article, «начальное» состояние в основном означает, что логическая блокировка является бесплатной, поэтому findAndModify() может обновить документ, чтобы получить эту блокировку. Таким образом, только одно приложение может запускать транзакцию.

0

На самом деле есть веская причина для начального состояния: Протокол 2PC определяет конечный автомат с «начальным» состоянием, который переходит в «ожидающий». Транзакция должна находиться только в состоянии ожидания, когда все участники находятся в состоянии ожидания. Кроме того, переход на «commit» должен запускаться только тогда, когда транзакция находится в состоянии ожидания. Наконец, транзакция должна быть отмечена только как «совершенная», как только все участники успешно совершили.

Если вы начали переход к фиксации без полного достижения ожидающего состояния, вы рискуете нарушить гарантии атомарности и изоляции.

В статье, в которой указано, состояние транзакции изменено на ожидание, прежде чем устанавливать участников в ожидании (вставка записей). Состояние транзакции должно быть зафиксировано до совершения участников. И есть дополнительное состояние, называемое «сделано», это может привести к ошибкам в реализации координатора. Я предлагаю вам взять статью с солью.

Смежные вопросы