Dam*_*nka 2 sql database sql-server sql-server-2008 sql-view
任务:出于仪表板的目的,我有一个复杂的选择查询,其中包含大量联接和子查询,它们从多个表中获取数据。
选项 1:我可以使用该查询创建一个视图SELECT,Spotfire 可以使用该视图作为其仪表板的数据源。
选项 2:我可以使用该SELECT查询作为源来创建 SSIS 包,并且可以每天一次将数据加载到单个表中。Spotfire 可以使用该单个表作为其仪表板的源。
注意:我不想要实时的。仪表板可以每晚更新(每天一次)。
我的理解:我知道视图基本上是一个存储的SELECT查询。如果我创建一个视图,每次用户访问仪表板时,它都会尝试访问该视图。这意味着,在后端视图将命中数据库中的基础表。相反,我可以简单地让 SSIS 每天加载一次特定的表。这样,达世币将接触该表,而不是实际的高度交易性表。
您能给我建议一个选项并附上解释吗?
您似乎已经涵盖了大部分问题。
视图的优点是它是实时的,截至报告运行的那一刻。缺点是它是系统上的实时负载,不仅包括 CPU、RAM 和磁盘 I/O,还包括(通常更重要的)表锁和行锁。
SSIS 包的优点是将报告负载与生产负载断开(再次强调:尤其是减少锁定争用是一个胜利),并且能够创建特殊的仅报告索引,以使报告运行得更快,而无需维护这些索引随着实时表的变化而变化(特别是因为用于报告的索引通常与用于生产更新的索引有很大不同)。缺点是增加了复杂性和故障点(如果 SSIS 包开始失败怎么办?)、过时的数据,以及如果您只是移动到同一台服务器上的特殊表,则报告仍然使用一些 CPU、磁盘和资源。来自生产服务器的 RAM 资源,即使有所减少。
就我个人而言,我倾向于使用视图,直到我不这样做:)。
我的意思是,一旦我开始使用 SSIS 包将数据移动到单独的报告位置,我就想“全力以赴”该过程。不要只在同一台服务器上执行一份报告或表格;获得一个单独的报告服务器(甚至是一个成熟的数据仓库解决方案)并尽可能地转移到它。然后确保有人负责监控其运行状况和迁移包的运行状况。我还将开始努力改变企业文化,以便每个人都能轻松地看到昨天的数据。但我想尽可能推迟这一点,并坚持使用视图,直到我开始看到转向某种真正的数据仓库或分析产品的切实理由,以证明这一成本是合理的。
| 归档时间: |
|
| 查看次数: |
3114 次 |
| 最近记录: |