Двухфазная фиксация описывается как «протокол атомарной фиксации». Я ожидал, что это будет означать, что все клиенты видят состояние мира либо до фиксации транзакции, либо после ее фиксации - без промежуточного состояния. Однако кажется, что он может войти в состояние, когда транзакция частично зафиксирована, а клиенты видят несогласованные данные, нарушая атомарность.
Рассмотрим случай с двумя базами данных, A и B. Если есть раздел во время фазы фиксации после фиксации A, но до того, как B зафиксировал фиксацию, транзакция будет частично зафиксирована. Пользователь, запрашивающий A и B, не увидит согласованных данных - транзакция зафиксирована на A, но у B есть данные, полученные до фиксации.
«Согласованная» часть ACID, похоже, также нарушена - клиент, запрашивающий A и B, может видеть данные, которые нарушают бизнес-правила.
Я предполагаю, что идея состоит в том, что система в конечном итоге сможет оправиться от этого, когда раздел будет закончен и менеджер транзакций проинструктирует B о фиксации. Тем временем, система находится в противоречивом состоянии «частично зафиксировано». Разве весь смысл атомарности не в том, чтобы предотвратить это? К тому времени, когда последовательность будет восстановлена, ущерб уже может быть нанесен.
Какое свойство упоминается, когда двухфазная фиксация называется атомарной?