Грязные руки! На каком языке вы программируете? Я бы порекомендовал взглянуть на OpenCV, библиотеку с открытым исходным кодом, которая поставляется с множеством функций, которые вы можете использовать для создания интересных систем. Он написан для C ++, но также имеет привязки для Python. Он поставляется со многими демонстрациями, которые вы можете сразу запустить и взломать.
Для полного обзора полевых книг лучший путь.
По любой конкретной теме, о которой вы хотите узнать больше, лучше всего использовать обзорные документы, найденные в Google Scholar.
Для самых последних исследований, посмотрите на документы из CVPR, которая является видением конференции:
Идея в этом случае состоит в том, чтобы регистрировать каждую операцию - операцию счетчика, которая делает обратное, в специальном журнале, и когда вам нужно откатиться, вы фактически запускаете команды, которые вы зарегистрировали .
В некоторых базах данных есть технология ретроспективного просмотра, с помощью которой вы можете попросить БД вернуться к определенной дате и времени. но вам нужно понять, как это работает, и убедиться, что это повлияет только на те данные, которые вам нужны, а не на других сотрудников ...
Я не думаю, что есть подобная технология на сервере SQL и там это SO-ответ, который говорит, что нет, но SQL продолжает развиваться ...
Другой вариант, который вы можете рассмотреть: Если пользователь может «отменить» операцию, вы можете реализовать таблицу «намерений», в которой вы можете хранить ожидающие операции. После того как вы пройдете через поток приложения, пользователю потребуется принять или отменить операцию, после чего вы можете просто запустить ожидающую транзакцию и применить ее к своей базе данных.
У нас есть аналогичная система в нашем веб-приложении. , где пользователь может отправить транзакцию на обработку и до 17:00 запланированного дня ее отменить. Мы сохраняем это в таблице намерений и обрабатываем любые транзакции, запланированные на этот день после дневного времени отключения. В вашем случае вам потребуется явная операция «Принять» или «Отменить» от пользователя после начальной «длительной операции», так что это немного изменит ваш процесс.
Надеюсь, это поможет.
Я не уверен, какие технологии вы здесь используете, но, безусловно, есть более эффективные способы решения этой проблемы. Вы можете начать с сохранения данных в сеансе и фиксации, когда они будут на последней странице. Многие фреймворки в наши дни также допускают длительные транзакции, охватывающие несколько запросов.
Однако вы, вероятно, захотите выполнить фиксацию в конце каждой страницы и просто установить какой-то флаг, когда процесс завершится. Таким образом, если что-то пойдет не так в середине процесса, пользователь сможет восстановиться, и еще не все потеряно.