Розподілені транзакції: дворазовий коміт і сага
Коротко: Коли дія зачіпає кілька баз даних чи служб, потрібні процедури, за яких усі підтверджують або всі відкочують: дворазовий коміт (строгий, блокувальний) або сага (вільна, з компенсувальними діями).
Докладніше: У 2PC координатор питає всіх учасників, чи готові вони (prepare), а потім дає команду на фіксацію (commit). Якщо координатор відмовляє після фази підготовки, учасники блокуються. Сага розбиває дію на локальні транзакції; якщо крок не вдається, виконуються компенсації для попередніх кроків.
Подробиці
- 2PC: атомарно, але блокує й повільно; блокування…
Див. також: шардування та партиціонування, event sourcing і CQRS