Принципы ACID (атомарность, согласованность, изоляция, долговечность) в распределённых базах данных меняются из-за особенностей таких систем. bigdataschool.ru habr.com
Некоторые проблемы, с которыми сталкиваются при реализации ACID-транзакций в распределённых системах:
- Физическое разделение данных. habr.com Каждый сервис имеет свою базу, и транзакция, затрагивающая несколько таких баз, не может быть локальной. habr.com Стандартные механизмы реляционных СУБД не работают между разными базами через сетевые границы. habr.com
- Сетевые сбои и задержки. habr.com Даже если попытаться выполнить связку операций как единую транзакцию, сбой сети или сервиса может привести к тому, что часть операций зафиксирована, а часть — нет. habr.com
- CAP-теорема и доступность. habr.com В распределённых системах приходится выбирать между строгой согласованностью и доступностью при сбоях связи. habr.com Попытка реализовать глобальную ACID-транзакцию зачастую ухудшает доступность: если один из сервисов недоступен или медленно отвечает, общая транзакция блокируется или откатывается. habr.com
- Отсутствие изолированности между сервисами. habr.com В монолите изолированность предотвращает конкурентные конфликты — параллельные транзакции не влияют друг на друга. habr.com В микросервисах же, без единого менеджера транзакций, другие сервисы могут увидеть промежуточное состояние данных другого сервиса, поскольку нет общей изоляции. habr.com
Чтобы решить эти проблемы, разработаны специальные паттерны и протоколы управления распределёнными транзакциями. habr.com Например, паттерн Saga позволяет достичь целостности данных в распределённых системах без использования глобальных ACID-транзакций. habr.com Идея состоит в том, чтобы разбить большую бизнес-транзакцию, затрагивающую несколько сервисов, на последовательность локальных транзакций в каждом из сервисов. habr.com Каждый шаг выполняется в рамках своего сервиса атомарно. habr.com Если все шаги прошли успешно — вся сага считается успешной. habr.com