在数据仓库中使用视图

时间:2009-05-29 09:16:55

标签: sql sql-server database database-design

我最近继承了一个使用视图来汇总数据的仓库,我的问题是: 观点是良好的做法,还是最好的方法? 我打算使用立方体来聚合多维查询。

很抱歉,如果这是一个基本问题,我对仓库和分析服务没有经验

由于

4 个答案:

答案 0 :(得分:4)

Analysis Services和Views的根本区别在于它们将被不同的报告或分析工具使用。

如果您有基于SQL的报告(例如,通过Reporting Services或Crystal Reports),则视图可能对这些报告很有用。视图也可以实现(这些视图在SQL Server上称为索引视图)。在这种情况下,它们会持久保存到磁盘,并可用于减少对视图执行查询所需的I / O.针对非物化视图的查询仍然会触及基础表。

通常,视图用于安全性或简单性目的(即将业务逻辑或计算封装在易于查询的内容中)。为了安全起见,他们可以通过过滤(限制可用行)或屏蔽基础表中的敏感字段来限制对敏感数据的访问。

Analysis Services使用不同的查询和报告工具,并预先计算和存储聚合数据。服务器的接口与SQL Server不同,因此多维数据集的报告或查询工具(例如ProClarity)与报告数据库的工具不同(尽管某些系统确实能够从中查询)。

答案 1 :(得分:3)

多维数据集是一种更好的方法来汇总数据并对其进行多维分析。

视图的问题有两个:性能不佳(所有这些连接和分组),以及用户无法切割和切片数据。

在我的项目中,我使用“哑”视图作为数据仓库和多维数据集之间的另一层(即,我的维度和度量组基于视图),因为它允许我更大程度的灵活性。

答案 2 :(得分:2)

视图对于安全目的很有用,例如限制/控制/标准化对数据的访问。

它们还可用于实现自定义表分区实现和联合数据库部署。

如果数据库中视图的功能是为了便于计算度量或统计数据,那么您肯定会从更合适的实现中受益,例如通过数据仓库解决方案提供的实现。

答案 3 :(得分:0)

几年前我和同一条船在一起。在我的情况下,我有权访问另一个SQL服务器。在第二台服务器上,我创建了一个到仓库的链接服务器,然后在第二台服务器上创建了我的视图和物化视图。从某种意义上说,我有一个数据仓库和一个报告仓库。对于该项目,这种方法效果最好,因为我们需要向其他部门和某些供应商提供数据访问权限。将服务器拆分为两个独立的实例,一个用于仓储,另一个用于报告,这也减轻了安全访问所涉及的一些风险。