私たちのソフトウェア (.NET 3.5 / SQL Server 2008)の「オブジェクト バージョニング」機能を作成するプロジェクトを開始しています。基本的にこれを行う必要があります。
- ユーザーは顧客を見ています:
- 姓は「スミス・ジョンソン」
- 2 つのアドレス(別のテーブルに保存)
- 1 個の製品を購入しました
- 1 従業員の連絡先(別のテーブルに保存)
- 200通(別テーブルに保存)
- ユーザーが[過去の状態を表示] ボタンをクリックし、[ 2009 年 9 月 25 日 15:00 ] を選択すると、同じ顧客を示す別のビューが表示されます。
- 姓は「スミス」です(名前はその後変更されました)
- 1アドレス(アドレスが追加されたため)
- 1個購入(但し、こちらを購入後、返品して新しいものを購入したため、上記とは異なります)
- 従業員の連絡先 2 件(1 件はその後削除されたため)
- 10通
この問題について一般的に考えると、いくつかの問題が浮かび上がります。
- どのレベルで変更をログに記録する必要があるか。たとえば、データベース レベル(すべてのテーブルのすべてのプロパティのすべての変更をログに記録する) またはオブジェクト レベル(変更後にすべてのオブジェクトとその依存関係をシリアル化して保存する)。
- テーブルの構造の変更は どのように処理されますか。たとえば、列「LastName」が「Surname」に変更された場合、列内のデータをすべて同じ列に属するものとして追跡する方法 (したがって、バージョン管理サービスは「これを報告しません」顧客は 9 月 25 日に姓を持っていませんでした」が、代わりに姓を見ることを知っています。
- .NET / SQL Server 2008 領域で、これをサポートする可能性のあるサポート テクノロジが存在します。たとえば、SQL Server 2008 の変更追跡機能を調べています。
- バージョン管理にどのようなパターンが存在するか。たとえば、アプリケーションで元に戻す機能を作成するために使用できるコマンド パターンについて考えています。
- このバージョン サービスでは、ロールバックを実行する必要はありません。オブジェクトの依存関係の状態を表示できる必要があるだけです。
バージョニング機能をソフトウェアに実装した経験は何ですか? どんなアドバイスがありますか?