データベースのいくつかのテーブルで発生したすべての変更の実行中の履歴を保持することに関心があるため、分析目的でデータベースの履歴状態を再構築できます。
私は Postgres を使用していますが、この MVCC はこの目的のために悪用できるはずですが、これをサポートするドキュメントが見つかりません。私はそれを行うことができますか?より良い方法はありますか?
どんな入力でも大歓迎です!
UPD
Denis の回答を回答としてマークしました。なぜなら、彼は MVCC が私が求めているものであるかどうかという質問に実際に答えたからです。ただし、誰かが役に立つと思った場合に備えて、私が決めた戦略を以下に詳しく説明します。
私が望むことを行う Postgres 機能: オンライン バックアップ/ポイント イン タイム リカバリ。
http://www.postgresql.org/docs/8.1/static/backup-online.htmlでこの機能の使用方法が説明されていますが、基本的には、この「先行書き込みログ」をアーカイブ モードに設定して、データベースのスナップショットを作成できます (たとえば、 、ライブになる前に)、WAL を継続的にアーカイブします。その後、ログ再生を使用していつでもデータベースの状態を呼び出すことができます。また、必要に応じてウォーム スタンバイを使用するという副次的な利点もあります (スタンバイ サーバーで新しい WAL を継続的に再生することにより)。
おそらく、この方法は履歴を保持する他の方法ほど洗練されていません。クエリを実行するすべての時点で実際にデータベースを構築する必要があるためです。ただし、セットアップは非常に簡単で、情報を失うことはありません。つまり、履歴データの処理を改善する時間があれば、すべてが揃っているので、私の不格好なシステムをより洗練されたシステムに変えることができます。
これを完璧にする重要な事実の 1 つは、特定のアプリケーションの「有効時間」が「トランザクション時間」と同じであることです。そうでない場合は、「トランザクション時間」のみをキャプチャします。
WAL について知る前は、毎日のスナップショットか何かを取得することを検討していましたが、大きなサイズの要件と関連するデータ損失が私には合いませんでした。
最初からデータの保持を損なうことなく、すぐに起動して実行する方法として、これは完璧なソリューションのように思えます.