Я заинтересован в сохранении истории выполнения всех изменений, которые произошли в некоторых таблицах в моей базе данных, что позволяет восстановить исторические состояния базы данных для целей анализа.
Я использую Postgres, и эта вещь MVCC просто кажется, что я должен использовать ее для этой цели, но я не могу найти никакой документации для ее поддержки. Могу ли я это сделать? Есть ли лучший способ?
Любой ввод оценивается!
------- EDIT -------
Я отвел ответ Дениса как ответ, потому что он действительно ответил, является ли MVCC тем, что я хочу, в чем вопрос. Тем не менее, стратегия, о которой я остановилась, подробно описана ниже, если кто-либо сочтет это полезным:
Функция Postgres, которая делает то, что я хочу: онлайн-резервное копирование/точечное восстановление.
http://www.postgresql.org/docs/8.1/static/backup-online.html объясняет, как использовать эту функцию, но по существу вы можете установить этот "журнал записи вперед" в режим архивации, сделать снимок базы данных (скажем, до того, как она выйдет в прямом эфире), а затем постоянно архивировать WAL. Затем вы можете использовать повтор воспроизведения журнала, чтобы вызвать состояние базы данных в любое время, при этом вы можете использовать теплый режим ожидания (если постоянно переигрывать новые WAL на резервном сервере).
Возможно, этот метод не так изящен, как другие способы хранения истории, поскольку вам нужно фактически создавать базу данных для каждого момента времени, который вы хотите запросить, однако очень легко настроить и потерять нулевую информацию. Это означает, что когда у меня есть время, чтобы улучшить обработку исторических данных, у меня будет все, и я смогу превратить свою неуклюжую систему в более элегантную систему.
Одним из ключевых фактов, которые делают это настолько совершенным, является то, что мое "действительное время" совпадает с моим "временем транзакции" для конкретного приложения - если бы это было не так, я бы только захватил "время транзакции".
Прежде чем я узнал о WAL, я рассматривал возможность делать ежедневные снимки или что-то в этом роде, но требования к большому размеру и потери данных не соответствовали мне.
Для быстрого запуска и запуска без ущерба для моего хранения данных с самого начала это кажется идеальным решением.