Откат до определенного момента с PostgreSQL - PullRequest
3 голосов
/ 18 апреля 2010

Есть ли способ отката к определенной начальной точке. Я ищу что-то вроде этого.

Начать конкретную_точку;

Теперь после этого другое приложение, связанное с тем же логином, будет вставлять и удалять данные (веб-сервисы с операциями crud) около 2 минут делаю тесты. Каждый вызов веб-сервиса объявляется как транзакция с Spring Ws.

После этого я хочу выполнить откат к конкретной точке, чтобы очистить базу данных до известного предыдущего состояния.

Я думал, что Откат к SAVEPOINT Foo; было решение, но не к сожалению?

Есть идеи?

Конфигурация: PostgreSQL 8.4 / Windows XP

Привет

Ответы [ 3 ]

1 голос
/ 18 апреля 2010

Два быстрых варианта:

  1. Создайте временную базу данных, используя основную базу данных в качестве шаблона, удалите временную базу данных после завершения тестирования.
  2. Таблица журналов может быть полезна при реализации чего-либо.
0 голосов
/ 19 апреля 2010

SAVEPOINTs работают только внутри одной транзакции, что означает одно соединение.

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

0 голосов
/ 18 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...