Что такое "распределенная транзакция"?
Статья в Википедии для Распределенная транзакция не очень полезна.
Можете ли вы дать описание на высоком уровне того, что такое распределенная транзакция?
Также вы можете привести пример того, почему приложение или база данных должны выполнять транзакцию, которая обновляет данные на двух или более сетевых компьютерах? Я понимаю классический пример банка; Мне больше интересны распределенные транзакции в базах данных в Интернете, таких как Dynamo, Bigtable, HBase или Cassandra.
Ответы
Ответ 1
Обычно транзакции происходят на одном сервере базы данных:
BEGIN TRANSACTION
SELECT something FROM myTable
UPDATE something IN myTable
COMMIT
Распределенная транзакция включает несколько серверов:
BEGIN TRANSACTION
UPDATE amount = amount - 100 IN bankAccounts WHERE accountNr = 1
UPDATE amount = amount + 100 IN someRemoteDatabaseAtSomeOtherBank.bankAccounts WHERE accountNr = 2
COMMIT
Трудность возникает из-за того, что серверы должны обмениваться данными, чтобы гарантировать, что на обоих серверах будут выполнены транзакционные свойства, такие как атомарность: если транзакция завершается успешно, значения должны обновляться на обоих серверах. Если транзакция завершилась неудачно, транзакция должна быть отменена на обоих серверах. Никогда не должно происходить, чтобы значения обновлялись на одном сервере, но не обновлялись на другом.
Ответ 2
Распределенные транзакции охватывают несколько физических систем, тогда как в стандартных транзакциях нет. Синхронизация между системами становится потребностью, которая традиционно не существовала бы в стандартной транзакции.
Из вашей ссылки в Википедии...
... распределенная транзакция может быть рассматривается как транзакция базы данных, которая должны быть синхронизированы (или предоставить ACID свойства) среди множества участвующих баз данных, которые распределенных между различными физическими места...
Ответ 3
Распределенная транзакция - это транзакция, которая работает на нескольких компьютерах. Предположим, что вы запускаете транзакцию каким-либо способом в программе на компьютере A. Затем вы вносите некоторые изменения в данные в методе на компьютере A, а послесловия метод вызывает веб-службу на компьютере B. Метод веб-службы на компьютере B сбой и завершает транзакцию. Поскольку транзакция распределена, это означает, что любые изменения, сделанные на компьютере А, также необходимо отменить. Комбинация координатора распределенных транзакций по окнам и инфраструктуре .net облегчает эту функциональность.
Ответ 4
Распределенная транзакция представляет собой транзакцию в распределенной базе данных (то есть, где данные хранятся на ряде физически раздельных систем). Это примечательно тем, что существует сложная сложность (особенно в сообщениях), чтобы гарантировать, что все машины остаются в согласии, поэтому либо вся транзакция преуспевает, либо, похоже, что ничего не произошло вообще.