powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Двухфазный коммит
4 сообщений из 4, страница 1 из 1
Двухфазный коммит
    #38303699
feanorcheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

На работе столкнулся с проблемой выполнения двухфазного коммита в Cache.
Суть в следующем: есть база данных Cache и база данных SQL Server. С помощью маппинга в Cache были созданы таблицы из базы данных SQL Server. Теперь, когда в последней создаётся новая запись, она также создаётся и в маппированной таблице Cache, а потом сохраняется в отдельной, не связанной с SQL Server таблице.

Проблема в следующем: если система из Cache изменит поля в своей обособленной таблице, ей необходимо совершить транзакцию по изменению поля и в маппированной таблице. Получается, нам необходимо выполнить две независимых транзакции, и, в случае неудачи одной из них - откатить обе. Иными словами, нужно сделать либо две транзакции, либо ни сделать ни одной.

Я почитал в интернете - это распространенная проблема, однако во многих СУБД есть её решение. Меня интересует, есть ли подобная плюшка в Cache. Если это так, это сильно облегчит мне жизнь.

Спасибо!
...
Рейтинг: 0 / 0
Двухфазный коммит
    #38303939
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feanorcheg ,

Транзакции и так двухфазны (вернее процесс записи ). Может речь идёт о вложенных транзакциях ?

Но распределённые транзакции не поддерживаются для Caché TSQL .
Здесь уже встречались с ошибкой #7391

Попробуйте другой вариант: 4112627
feanorchegЯ почитал в интернете - это распространенная проблема, однако во многих СУБД есть её решение.Какие, например, СУБД поддерживают гетерогенные транзакции?
...
Рейтинг: 0 / 0
Двухфазный коммит
    #38307012
feanorcheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Oracle точно.
Мне нужно реализовать случай, описанный выше - как он называется, не важно. Из университета помню, что такая транзакция называется двухфазной(когда распределенная система совершает коммит в несколько СУБД одновременно). И такие транзакции выполняются в два этапа.

Так есть идеи?
...
Рейтинг: 0 / 0
Двухфазный коммит
    #38308043
sigmov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
feanorcheg,

Сталкивались с такой проблем - контроля распределенных транзакций на Cache<->MsSql (Distributed Transaction Coordinator).

Тут у нас получилось 3 варинта
1. MsSql поддерживает DTC, линкуем Cache' к MsSql через LinkedServer и взаимодействие реализуем через MsSql по таскам
2. Пишем сервис на C#/Delphi в котором реализуем подобие DTC между кашей и скулем
3. Реализуем подобие DTC посредством SQL API + ODBC/JDBC в каше

Поскольку у нас Cache' знала об MsSql, MsSql о Cache' не ведал (как и в жизни , а вешать между ними еще одно звено не хотелось мы пошли по 3му варианту. О маппинге/проджекшене и прочих "вкусных" внутренних инструментах придется забыть. Нужно будет напрямую обращаться к JDBCContext и вызывать строчные SQL-комманды "BEGIN TRANSACTION" "INSERT INTO ...." .... "COMMIT TRANSACTION".
Гемморойно, одним словом. Но на то она и каша.....
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Двухфазный коммит
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]