我正在一个交易平台上工作,它的业务很大一部分是报告的。
设置如下: SQL数据库(约200个表)--记录数量相当少。(20,000条记录了最大的表,但每周都在增长)对于报告服务来说,SQL视图被用来查询。根据数据仓库方法的精神,设想视图的结果集是非规范化的。然后将这些数据集传递给第三方报告平台(如Tableau、Power或SiSense),后者将这些数据集放入多维数据集(可能是一些柱状结构,如mono、hadoop等)。从那里开始产生报告。
当前的挑战。的视图(约8)。很大很难维护。为了给出一个例子,视图之一输出100个字段。但是这些字段中的每一个都是使用复杂的CASE语句、嵌套的IF语句、内联函数等计算的字段,这使得这个视图高达700行sql代码。我从另一位员工那里继承了这些,现在,不幸的是,,,我不得不维护它们。由于数据每周增长数百条记录(通过迁移和事务),视图中的字段数量也在增加(每周几个),因此多维数据集构建所用的时间越来越长。举个例子,几个月前我们重新构建了多维数据集10分钟来刷新数据(这需要5分钟)。目前需要12到15分钟的时间来构建,所以我们每30分钟设置一次。可以想象,随着数据和字段数量的不断增加,情况会变得更糟;我们需要尽可能多的最新数据。
唯一的好处是,一旦构建了多维数据集,报告就会快速加载,因为它们是从第三方平台中提取出来的,所以这里不需要考虑。
我的想法,,我想摆脱视图,这样我就可以简化维护过程,并且保持多维数据集重新构建的最短时间。
选项:
问题:,我应该采取什么方法?上面的三个有什么意义吗?,当然,我对其他的想法或建议也很感兴趣。
谢谢!
发布于 2016-07-31 18:36:31
根据我的经验,你最好的方法是1。这是昂贵的,但会给你更好的好处。为最佳实践和设计模式创建一个ROLAP DWH(我推荐Kimball的“数据仓库工具包”),如果您有机会使用柱状数据存储(比如amazon redshift或sap sybase iq),那么所有的case语句、嵌套的ifs和您提到的所有操作都将在ETL时间上应用,因此在ROLAP中,所有的东西都是预先计算和优化的。不要忘记使用索引(取决于您使用的依赖技术)。一些数据库供应商已经为ROLAP发布了“索引最佳实践”,因此他们将根据表(维度)的类型和数据类型告诉您索引的类型。
https://stackoverflow.com/questions/38598948
复制相似问题