Что такое распределенная транзакция? Что такое 2-х фазный коммит (2-phase commit)?

max аватар
134
Находится в разделах:

Как мы знаем, транзакция - это набор действий, производимых как одно целое. При таком подходе все операции выполняются как логический модуль по принципу ACID (Atomic, Consistent, Isolated, Durable). 

Распределенная транзакция (distributed transaction) - ACID транзакция между двумя или более независимыми транзакционными ресурсами на подобии двух разделенных баз данных.  Чтобы транзакция закончилась удачно, все индивидуальные ресурсы должны коммитится удачно. Если хоть одна операция транзакции провалится, вся транзакция должна быть откатана назад. Двухфазовый коммит - это подход для коммита распределенных транзакций в два шага.

Фаза 1 - подготовка: Каждый элемент ресурсов опрашивается на готовность к коммиту - обычно методом сохранения новых данных, но еще НЕ УДАЛЯЯ старые данные.

Фаза 2 - коммит: Если все ресурсы готовы, они все комитятся - после чего старые данные удаляются и транзакция более не откатывается.  Двухфазовый коммит удостоверивается в том, что распределенная транзакция может всегда быть вкомичыеной или всегда откатаной, если одна из баз данных рушится. Спецификация XA определяет, как приложение должно использовать менеджер транзакций для координации распределенных транзакций через множество менеджеров ресурсов. 


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

коммититься с мягким знаком)

max аватар

Спасибо, поправим

удостоверивается? вкомичыеной? откатаной?

Может лучше перефразировать как

Двухфазный коммит удостоверяется в том, что распределенная транзакция всегда может быть закоммичена (хотя правильнее сказать "зафиксирована"), а в случае проблем с одним из транзакционных ресурсов - отменена.

 

Подходит грузин к ларьку, где газированную воду продают, и спрашивает:

- Почем у вас воды?

- Не "воды", а "вода".

- Хорошо, дайте мне стакан вода.

- Не "вода", а "воды".

- Вы что, тут грамматиком торгуете, или водом?!

 Laughing

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке