我有一個涉及網絡投票系統的項目。當前值和相關數據存儲在幾個表中。歷史數據將是該項目的重要方面,因此我還創建了審計表,以便將當前數據定期移至該表中。有效使用差異的版本控制數據庫
我覺得這個策略效率很低。即使我每天只存檔數據,即使只有1或2個用戶在某一天進行更新,行數也會變得很大。
我能想到的下一個選擇是隻存儲已更改的條目。這意味着必須構建邏輯來自動創建給定日期的視圖。這意味着更少的存儲行,但相當複雜。
我最後的想法不太傳統。由於歷史數據將用於報告目的,因此網絡用戶無需快速訪問。我在想,我的分貝可能沒有歷史數據。 DB僅表示當前狀態。然後,每天,整個數據庫可以加載到對象中(用戶數量相對較少),然後序列化爲XML或JSON。這些文件可能與前一天有差異並存儲。事實上,SVN可以爲我做到這一點。當我想要獲得給定過去一天的數據時,系統必須檢索當天的版本並反序列化爲對象。這顯然是一個代價高昂的操作,但這裏的性能並不是問題。我正在考慮使用LINQ來解決這個問題,我認爲這可以簡化一些事情。序列化過程必須非常有條理才能使差異更好地工作。
你會採取哪種方法?
感謝
所以你建議我序列化/反序列化和提交數據git動態? – 2009-04-14 13:56:01
我並不十分理解你的問題陳述,但git的設計目標是將性能作爲主要設計目標之一 - 如果它與你的應用程序相匹配,它可能會比你嘗試的任何其他方法更快 – 2009-04-14 19:26:31