oess_1: Детали реализации поддержки транзакций

В версиях ObjESSty до версии 1.4 (включительно) под клиентом понимается отдельный объект oess_1::db::cln::db_t, который подключен к некоторому объекту oess_1::db::site::localhost_t. В принципе, в приложении может быть только один объект localhost, который обслуживает все открытые приложением БД. Тогда все oess_1::db::cln::db_t будут считаться клиентами одного "сервера БД". На практике до сих пор такого не применялось, но поддержка транзакций разрабатывалась с учетом этой возможности. И с расчетом на то, что со временем класс localhost_t дествительно сможет использоваться для реализации полноценного сервера БД.

Транзакцию может проводить только один клиент. Операции всех других клиентов во время проведения транзакции завершаются с кодом ошибки transaction_in_progress.

Транзакции обрабатываются на уровне класса oess_1::db::impl::db_content::std_db_content_t. Класс std_db_content_t введет счетчик количества начатых транзакций.

Когда клиент начинает транзакцию:

Когда клиент подтверждает транзакцию:

При выполнении какой-либо операции:

При попытке владельца транзакции отключиться от БД при незавершенной транзакции воспринимается как откат транзакции.


Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:37 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz