Транзакционность в конфигурации (в стиле 1С)
От: maloi_alex СССР  
Дата: 08.01.13 19:32
Оценка:
Подскажите, как лучше организовать транзакционность, в плане сохранения изменений, если результатом изменений могут разные хранилища. К примеру это может XML файл или СУБД.
У меня задача, примерно, похожа как в 1С конфигурация редактируется.
Я подозреваю, что в 1С все изменения накапливаются в определенной буфере опер. памяти с UndoManager'ом. Затем при нажатии на кнопку "Сохранить", происходит валидация конфигурации, и затем в пределах одной транзакции изменения сбрасываются в БД.
Но в случае с БД понятно, в каждой современной СУБД есть свой менеджер транзакций, а как быть с XML?
Как сохранить изменения в XML с возможностью отката?
Re: Транзакционность в конфигурации (в стиле 1С)
От: Ромашка Украина  
Дата: 08.01.13 20:05
Оценка: 2 (1)
Здравствуйте, maloi_alex, Вы писали:

Я предлагаю сразу в юмор перенести.

_>Затем при нажатии на кнопку "Сохранить", происходит валидация конфигурации, и затем в пределах одной транзакции изменения сбрасываются в БД.


Вы хорошего мнения о разработчиках 1С.

_>Но в случае с БД понятно, в каждой современной СУБД есть свой менеджер транзакций, а как быть с XML?

_>Как сохранить изменения в XML с возможностью отката?

Вы сначала решите, вам "как в 1С" или транзакционность?

С XML все просто. Пишем новый файл с новым XML, переименовываем старый, даем имя старого файла новому, удаляем старый.


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[2]: Транзакционность в конфигурации (в стиле 1С)
От: maloi_alex СССР  
Дата: 08.01.13 20:10
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Вы сначала решите, вам "как в 1С" или транзакционность?

Р>С XML все просто. Пишем новый файл с новым XML, переименовываем старый, даем имя старого файла новому, удаляем старый.

Спасибо. 1С предлагаю не трогать Предлагаю отнести мои вопросы к категории "горе от ума"
Re: Транзакционность в конфигурации (в стиле 1С)
От: wildwind Россия  
Дата: 08.01.13 20:10
Оценка:
Здравствуйте, maloi_alex, Вы писали:

_>Как сохранить изменения в XML с возможностью отката?


Транзакционная запись файла
Автор: Fortnum
Дата: 26.12.12
, для начала.
Re[2]: Транзакционность в конфигурации (в стиле 1С)
От: maloi_alex СССР  
Дата: 08.01.13 21:41
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, maloi_alex, Вы писали:


_>>Как сохранить изменения в XML с возможностью отката?


W>Транзакционная запись файла
Автор: Fortnum
Дата: 26.12.12
, для начала.


Да, прочитал уже. Проще будет будет сделать копию файла перед сохранением. А потом уже и откак.
Re[2]: Транзакционность в конфигурации (в стиле 1С)
От: maloi_alex СССР  
Дата: 08.01.13 21:46
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Вы сначала решите, вам "как в 1С" или транзакционность?


А вы знаете как в 1С? Тогда, да, мне это очень интересно!
Re[2]: Транзакционность в конфигурации (в стиле 1С)
От: Аноним  
Дата: 29.01.13 03:35
Оценка:
Здравствуйте, Ромашка, Вы писали:

_>>Затем при нажатии на кнопку "Сохранить", происходит валидация конфигурации, и затем в пределах одной транзакции изменения сбрасываются в БД.


Р>Вы хорошего мнения о разработчиках 1С.


Ответьте же скорее, что мешает быть хорошего мнения о разработчиках 1С ?

_>>Но в случае с БД понятно, в каждой современной СУБД есть свой менеджер транзакций, а как быть с XML?

_>>Как сохранить изменения в XML с возможностью отката?

Р>Вы сначала решите, вам "как в 1С" или транзакционность?


Ясно же написано — транзакционность, как в 1С.
Re[3]: Транзакционность в конфигурации (в стиле 1С)
От: _ABC_  
Дата: 29.01.13 03:44
Оценка: 4 (1)
Здравствуйте, maloi_alex, Вы писали:

_>А вы знаете как в 1С? Тогда, да, мне это очень интересно!

С точки зрения БД на примере SQL Server. Версия 8.1. Если верить логам тех. журнала 1С и моей памяти.

Само описание конфигурации хранится в одной из таблиц БД. Все версии конфигурации сохраняются. Если требуется изменение схемы существующей таблицы _tn, то создается новая таблицв _tn_NG. Потом туда кусками по 25-40 записей толкаются записи из старой таблицы. Это делается для всех таблиц, требующих изменения. Когда все записи перенесены, 1С удаляет старую таблицу _tn и переменовывает _tn_NG в _tn. Разумеется, это всё далеко не в одной транзакции происходит. Откат обновления возможен до переименовывания.

Если наврал, то пусть знающие люди поправят.
Re[4]: Транзакционность в конфигурации (в стиле 1С)
От: Аноним  
Дата: 29.01.13 07:28
Оценка: +1
Здравствуйте, _ABC_, Вы писали:

_AB>Само описание конфигурации хранится в одной из таблиц БД. Все версии конфигурации сохраняются. Если требуется изменение схемы существующей таблицы _tn, то создается новая таблицв _tn_NG. Потом туда кусками по 25-40 записей толкаются записи из старой таблицы. Это делается для всех таблиц, требующих изменения. Когда все записи перенесены, 1С удаляет старую таблицу _tn и переменовывает _tn_NG в _tn. Разумеется, это всё далеко не в одной транзакции происходит. Откат обновления возможен до переименовывания.


Не лишне упомянуть, что обновление конфигурации, требующее изменения схемы, возможно только после установки монопольного режима доступа (при отсутствии работающих с программой пользователей).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.