我正在运行ASP.NET MVC 3 Web应用程序,并希望收集统计信息,例如:
我想汇总这些数据并将其分解:
我想知道汇总数据的最简洁,最有效的策略是什么。我能想到一对,但我相信还有更多:
我担心的是:
有没有人有这方面的真实经验,如果有的话,你会建议哪种方法以及积极和消极的方面是什么?如果有一个更好的解决方案我不会想到我会喜欢听到它......
由于
JP
答案 0 :(得分:2)
我需要在最近的一个项目中做类似的事情。我们在辅助数据库中实现了一个完整的审计系统,它跟踪实时数据库上每条记录的变化。基本上每次插入,更新和删除实际上都会更新2条记录,一条在实时数据库中,一条在审计数据库中。
由于我们在审计数据库上实时获得了这些数据,因此我们使用第二个数据库来填充我们可能需要的任何报告。我在使用报告数据库时发现的一个技巧是忘记规范化。只需为您想要的每个报告创建一个表,并让它只包含您为该报告所需的数据。它的重复数据,但性能提升是值得的。
关于填写报告中的实际数据,我们使用混合物。每日报告由凌晨3点左右的计划任务生成,同样适用于每周和每月报告,通常是在周末或深夜。
其他报告是按需生成的,主要使用自上一天以来的数据,所以它不是那么多记录,而是全部来自辅助数据库。
答案 1 :(得分:1)
我同意您应该为统计信息创建一个单独的数据库,它将减少对数据库的影响。
你可以考虑使用“Staging”表和“Aggregate”表;这样,如果你想访问临时表中的近实时数据,当你想要历史数据时,你会转到聚合。
最后,我建议您使用异步调用来保存统计信息;这样你的页面就不会对响应时间产生影响。
答案 2 :(得分:0)
我建议您为此创建一个单独的数据库。最好的方法是使用BI技术。有一个单独的服务 Bi的SQL服务器。