我開始一個項目,爲我們的軟件(.NET 3.5/SQL Server 2008)創建「對象版本控制」功能,基本上它需要這樣做:尋找在我們的應用程序中實現版本控制功能的建議
- 用戶正在尋找一個客戶:
- 姓 「史密斯 - 約翰遜」
- 個2地址(保存在不同的表)
- 1產物購買
- 1名僱員接觸(保存在不同的表)
- 200郵件(保存在不同的表)
- 用戶點擊「查看過去狀態」按鈕,並選擇「2009年9月25日15:00」,其中顯示同一客戶的單獨視圖:
- 姓 「史密斯」(自然後名已經改變)
- 1地址(因爲隨後加入的地址)
- 1產物購買(但它是不同以上,因爲他買了這個,以後又回來了,買了一個新的)
- 2員工聯繫(因爲其中一個已被刪除) 個
- 10郵件
在考慮一般的若干問題的問題上來:
- 在什麼水平應該改變記錄,例如在的數據庫水平(日誌中每個表的每個屬性的每一個變化)或對象級別(序列化和存儲每一個物體和後變更後的相關性)
- 怎麼會結構的變化的表被處理,例如如果「LastName」列更改爲「Surname」,那麼如何跟蹤列中的數據全部屬於同一列(因此版本服務不會報告「該客戶在9月25日沒有姓)」,而是知道的姓氏看,在.NET/SQL Server 2008的區域
- 什麼支撐技術存在可能支持這項工作,如我期待到SQL Server的Change Tracking功能2008
- 存在什麼樣的模式進行版本控制,例如我正在考慮Command Pattern,它可用於在應用程序中創建撤消功能。
- 此版本的服務確實需要執行回滾而不是。它只需要能夠顯示對象的狀態依賴關係。
在軟件中實現版本控制功能的經驗是什麼?你有什麼建議?
如何使用無模式數據庫結構來處理這個問題呢?我認爲你可以保存以前版本的索引,並且這種方式的表結構可以非常動態?有趣的問題。 – thismat 2009-11-06 14:12:43