2009-07-20 11 views
1

2番目の考慮事項は、ベースラインが適用されたドキュメントのアクティブなドキュメントまたはフォルダに関連付けられたテーブルデータのコピーを作成し、安全な保管のために保管してください。コードの複雑さの節約は膨大なものになりますが、ストレージの使用量には影響はありますが、スキーマはよりシンプルに保たれます(ただし、それほど大きくないとは思えません)リレーショナルデータベースでバージョン管理されたテーブルのコピーを保守するためのインテリジェントな方法(プログラミングに関する考慮事項)

答えて

3

これは私も同様です現在のプロジェクトでいくつかの良い答えhere

私は個人的にオプション#1を使用して、各「バージョン管理」テーブルのpkeyにバージョン列を追加しています。 FKeysはバージョン列も使用します。私の主な考慮事項は、ストレージ要件が高いため、クエリの容易さでした。私は周りのバージョンの数を厳密に制限する余裕があり、その問題を緩和します。

1

私は本当にあなたがtemporal databaseを探していると思います。私たち自身の実装では、テーブルに「IDの作成」と「IDの削除」という一対の監査ログ識別子が追加されました(データベースを変更したすべてのトランザクションは「監査ログ」に要約され、テーブルにレコードを追加したトランザクションごとに、監査ログ識別子が作成IDとして使用され、削除IDはゼロでした。レコードが変更されたとき、新しいバージョンに新しい作成IDが割り当てられ、同じIDが古いバージョンの削除IDとして使用されました。

削除IDがゼロのテーブルのビューを作成して、現在のデータのみの仮想テーブルを作成するのはかなり簡単でした。また、特定のトランザクションが処理される直前または直後のテーブルの内容を検索したり、テーブルの特定の行を変更したトランザクションのリストを取得したりすることもできます。

時間、スペース、および複雑さのペナルティがありますすべてこれのために。しかし、私たちのために、大金を扱うなら、それはそれに値するものでした。

関連する問題