хм. но не прозрачно. А вроде как можно доделать до прозрачности
что-то мне все-таки не понятно почему оно должно работать в общем случае...
ведь, если не ошибаюсь, гарантировано оно работает только в случае, если
поведение обоих серверов одинаковое для _каждого_ запроса который
приходит на сервер (независимо от последовательности исполнения
различных запросов). В случае одного приложения оно, конечно,
тривиально. А в случае двух приложений с concurrency или read committed
изоляцией распределенный deadlock или livelock очень даже возможен.
Возможно, что через timeout обе транзакции получат отлуп - здесь надо
аккуратно проанализировать, где и когда оно случится.
В случае no wait транзакций мне кажется что вполне даже возможно, что на
одном сервере операция пройдет успешно, на другом - получит отлуп. Что
тогда возвращать клиенту? Ошибку? А как откатить изменения в той базе,
где запрос отработал?
То-есть нутром чуствую, что класс задач, где такое работает, довольно
узкий и надо четко указать ограничения, когда оно будет корректно
работать... Может я не прав, тогда аргументируйте...
Роман