背景信息
我们的应用程序读取3个组件/写道:OLTP与CQRS或SSIS OLAP
- ASP.NET MVC 3客户前端网站(写操作)
- 的Winform验证工具(写操作)
- 租户的Silverlight仪表板(95%的聚合读取5%写操作)
(3)是可使用的一些性能改进的唯一部件。
我们的存储是已经存储了聚集在Silverlight应用程序消耗数据的过程是SQL Server Standard OLTP数据库。
当使用数据库引擎优化顾问或执行计划,我们没有看到任何重要的指标缺失,我们重建与SQL代理工作指标。
大部分部件都是迷你
- X =由间隔(日,周,月,年)
- Y =总(SUM,AVG,ECT)选定的时间
目前我们每个小工具返回大约14-20分。我们的仪表板最初打开10个小部件。
我们的尺寸是:租户,存储,(日,周,月,年)
我们的事实:已完成,不完整,赎回,得分......
我知道一个非规范化的表将删除需要从SQL Server重新计算 商店经理,特许经营业主,企业查看数据〜50(个用户同时使用) 每次
我会说实话,如果我们用OLAP去这将是我第一次双手放在与它的经验。
问题
什么是一个丰富的报告仪表板的长期解决方案?
我会假设OLAP。如果是的话,你会如何保持最新,以接近实时的仪表板,我们今天有吗? 在OLAP重建自身时放置维护页面不是一种选择。 理想情况下,我们希望逐步做到这一点,并参见Nservicebus(我们现在已经使用它)作为一个伟大的桥梁,以更新这些非规范化视图 。我们是否将这些非规范化视图放在oltp中作为另一个表或者是否有增量更新OLAP数据源的方法?
参考
http://www.udidahan.com/2009/12/09/clarified-cqrs/
http://www.udidahan.com/2011/10/02/why-you-should-be-using-cqrs-almost-everywhere%E2%80%A6/
不知道您的报表要求或迁移到SQL Server 2012的计划,但他们将提供称为[columnstore索引]的令人惊叹的只读选项索引选项(http://msdn.microsoft.com/ en-us/library/gg492088(v = sql.110).aspx)它为聚合提供出色的性能特征。你说你需要实时。 *每个人*都需要实时,直到他们必须开始为此付费。一旦客户看到实时的成本(硬件,开发,执行时间等),我经常会发现“哦,到时候已经足够好了” – billinkc 2012-02-20 13:41:35