Шаг 38 - Принцип работы Transaction server

Самый интересный момент заключается в том, зачем нужен этот Transaction Server. В принципе, правда зачем ? Ведь базы данных сами по себе поддерживают транзакции. Поддерживают. Только вопрос в том, что данные могут располагаться на разных серверах. Например, нужно перевести деньги с одного счета на другой. Данная операция должна пройти одним заходом. То есть это все одна транзакция. Но базы данных-то физически разные и получится две транзакции, а не одна. А если операция сложная? Тогда это будет две, три, десять транзакций. А работать они должны, как одна. По крайней мере в самом верху.

gif/38_1.gif (3373 b)

Вот смотрите приложение, обращается к некоторому объекту. Этот объект может вызывать еще несколько других объектов, которые реально могут работать даже с разными СУБД. Главный объект должен создаваться с транзакцией. В VB свойство должно быть RequiresNewTransaction, все объекты ниже должны выполняться в рамках транзакции главного объекта, значит свойство у них должно быть UsesTransaction. И, если хоть одна операция не удалась, то не удалась вся транзакция. Это одна транзакция для клиента, хотя реально их может быть и три для разных БД. MTS позволяет интегрировать транзакции в одну и для этого он создан. Обратите внимание, что есть главный объект, который порождает транзакцию, и который вызывает другие объекты в контексте своей транзакции.

Реальная демонстрация возможностей подобной системы была проведена в Нью-Йорке, 20 серверов Microsoft SQL Server 6.5 имитировали банковскую систему мира, еще двадцать серверов клиентов. 5 серверов Microsoft Transaction Server распределяли нагрузку и обеспечивали распределенные транзакции. За день система смогла обслужить миллиард транзакций, из которых значительная доля пришлась на долю распределенных (проходящих через несколько серверов баз данных).


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.