ROLLBACK отменить повтор - PullRequest
       7

ROLLBACK отменить повтор

0 голосов
/ 07 ноября 2010

Я строю базу данных, используя BST (дерево двоичного поиска), и я хочу, чтобы пользователь мог откатить последние 5 команд.Какие-либо предложения?Я использую Java.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2010

Звучит так, будто вы хотите шаблон Memento . По сути, вы создаете объект, который имеет всю информацию, необходимую для:

  1. Из состояния дерева перед операцией повторите операцию. (Redo)
  2. Из состояния дерева после операции отменить операцию. (Undo)

Ты бы оставил последние пять из них рядом. Когда пользователь запрашивает отмену, возьмите последнюю версию, попросите ее отменить операцию, а затем укажите каким-либо образом (например, некоторую переменную индекса), где вы находитесь в списке сувениров. После этого вы сможете перемещаться по списку в любом направлении, отменяя и возвращая его столько, сколько хотите.

0 голосов
/ 07 ноября 2010

Рассматривали ли вы использование Berkey DB? Это бесплатные и поддерживаемые вложенные транзакции (которые позволят вам иметь любое количество уровней отката):

http://download.oracle.com/docs/cd/E17076_02/html/gsg_txn/JAVA/nestedtxn.html

Даже если вы решите реализовать свою собственную БД, это может быть полезно в качестве справки.

...