Хранение и обработка версий данных средствами PostgreSql?
Есть ли возможность в PostgreSql организовать средствами самой DBMS или с помощью каких-то плагинов сохранение истории изменений данных в базе данных (например, как binary log в MySQL)? Интересует так же, чтобы эту историю можно было прочесть и восстановить данные до какой-то версии.
В общем, интересует как можно организовать версионность базы данных, например, так, что каждая транзакция генерирует новую версию базы, и есть возможность откатываться от одной до другой версии (вернее, не совсем откатываться — но прочесть внесенные изменения, и восстановить какую-нибудь сущность в БД до нужного состояния).
P.S. в данный момент, планируется делать на уровне логики приложения и хранить изменения в самой базе. Хотелось бы достичь этого же эффекта средствами dbms, если это возможно.
Имеется в виду что-то типа ретроспективных запросов в Oracle? К сожалению, PostgreSQL этого пока не умеет.
Если требуется хранить историю изменений данных — можно написать триггер, который будет скидывать историю изменений в таблицу, т.е. не обязательно делать всё на уровне приложения. Можно написать универсальный триггер, например, на pl/perl или даже оформить в виде плагина на C (производительность будет выше), который будет писать историю в удобном для Вас виде. Если устраивает — могу помочь в написании.