我有一个涉及网络投票系统的项目。当前值和相关数据存储在几个表中。历史数据将是该项目的重要方面,因此我还创建了审计表,以便将当前数据定期移至该表中。有效使用差异的版本控制数据库
我觉得这个策略效率很低。即使我每天只存档数据,即使只有1或2个用户在某一天进行更新,行数也会变得很大。
我能想到的下一个选择是只存储已更改的条目。这意味着必须构建逻辑来自动创建给定日期的视图。这意味着更少的存储行,但相当复杂。
我最后的想法不太传统。由于历史数据将用于报告目的,因此网络用户无需快速访问。我在想,我的分贝可能没有历史数据。 DB仅表示当前状态。然后,每天,整个数据库可以加载到对象中(用户数量相对较少),然后序列化为XML或JSON。这些文件可能与前一天有差异并存储。事实上,SVN可以为我做到这一点。当我想要获得给定过去一天的数据时,系统必须检索当天的版本并反序列化为对象。这显然是一个代价高昂的操作,但这里的性能并不是问题。我正在考虑使用LINQ来解决这个问题,我认为这可以简化一些事情。序列化过程必须非常有条理才能使差异更好地工作。
你会采取哪种方法?
感谢
所以你建议我序列化/反序列化和提交数据git动态? – 2009-04-14 13:56:01
我并不十分理解你的问题陈述,但git的设计目标是将性能作为主要设计目标之一 - 如果它与你的应用程序相匹配,它可能会比你尝试的任何其他方法更快 – 2009-04-14 19:26:31