Как я откатываю транзакцию, которая уже фиксировалась?

Грязные руки! На каком языке вы программируете? Я бы порекомендовал взглянуть на OpenCV, библиотеку с открытым исходным кодом, которая поставляется с множеством функций, которые вы можете использовать для создания интересных систем. Он написан для C ++, но также имеет привязки для Python. Он поставляется со многими демонстрациями, которые вы можете сразу запустить и взломать.

Для полного обзора полевых книг лучший путь.

По любой конкретной теме, о которой вы хотите узнать больше, лучше всего использовать обзорные документы, найденные в Google Scholar.

Для самых последних исследований, посмотрите на документы из CVPR, которая является видением конференции:

http://www.cvpapers.com/cvpr2010.html

6
задан Byron Whitlock 6 November 2009 в 21:22
поделиться

3 ответа

Идея в этом случае состоит в том, чтобы регистрировать каждую операцию - операцию счетчика, которая делает обратное, в специальном журнале, и когда вам нужно откатиться, вы фактически запускаете команды, которые вы зарегистрировали .

В некоторых базах данных есть технология ретроспективного просмотра, с помощью которой вы можете попросить БД вернуться к определенной дате и времени. но вам нужно понять, как это работает, и убедиться, что это повлияет только на те данные, которые вам нужны, а не на других сотрудников ...

Oracle Flashback

Я не думаю, что есть подобная технология на сервере SQL и там это SO-ответ, который говорит, что нет, но SQL продолжает развиваться ...

4
ответ дан 9 December 2019 в 22:36
поделиться

Другой вариант, который вы можете рассмотреть: Если пользователь может «отменить» операцию, вы можете реализовать таблицу «намерений», в которой вы можете хранить ожидающие операции. После того как вы пройдете через поток приложения, пользователю потребуется принять или отменить операцию, после чего вы можете просто запустить ожидающую транзакцию и применить ее к своей базе данных.

У нас есть аналогичная система в нашем веб-приложении. , где пользователь может отправить транзакцию на обработку и до 17:00 запланированного дня ее отменить. Мы сохраняем это в таблице намерений и обрабатываем любые транзакции, запланированные на этот день после дневного времени отключения. В вашем случае вам потребуется явная операция «Принять» или «Отменить» от пользователя после начальной «длительной операции», так что это немного изменит ваш процесс.

Надеюсь, это поможет.

6
ответ дан 9 December 2019 в 22:36
поделиться

Я не уверен, какие технологии вы здесь используете, но, безусловно, есть более эффективные способы решения этой проблемы. Вы можете начать с сохранения данных в сеансе и фиксации, когда они будут на последней странице. Многие фреймворки в наши дни также допускают длительные транзакции, охватывающие несколько запросов.

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

1
ответ дан 9 December 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: