我有一个涉及网络投票系统的项目。当前值和相关数据存储在多个表中。历史数据将是这个项目的一个重要方面,所以我还创建了审计表,当前数据将定期移动到其中。
我发现这种策略效率很低。即使我每天只归档数据,即使在某一天只有 1 或 2 个用户进行更新,行数也会变得巨大。
我能想到的下一个替代方案是仅存储已更改的条目。这意味着必须构建逻辑来自动创建给定日期的视图。这意味着更少的存储行,但相当复杂。
我的最终想法有点不那么传统。由于历史数据将用于报告目的,因此网络用户无需快速访问。我在想我的数据库中可能没有历史数据。DB 仅代表当前状态。然后,每天,整个数据库都可以加载到对象中(用户/数据的数量相对较少),然后序列化为 XML 或 JSON 之类的东西。这些文件可能与前一天不同并被存储。事实上,SVN 可以为我做到这一点。当我想要过去一天的数据时,系统必须检索当天的版本并反序列化为对象。这显然是一项代价高昂的操作,但这里的性能并不是那么重要。我正在考虑为此使用 LINQ,我认为这会简化事情。
你会采取哪种方法?
谢谢