首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库(OLTP)和报告

数据库(OLTP)和报告
EN

Stack Overflow用户
提问于 2016-07-26 20:04:31
回答 1查看 1.1K关注 0票数 2

我正在一个交易平台上工作,它的业务很大一部分是报告的。

设置如下: SQL数据库(约200个表)--记录数量相当少。(20,000条记录了最大的表,但每周都在增长)对于报告服务来说,SQL视图被用来查询。根据数据仓库方法的精神,设想视图的结果集是非规范化的。然后将这些数据集传递给第三方报告平台(如Tableau、Power或SiSense),后者将这些数据集放入多维数据集(可能是一些柱状结构,如mono、hadoop等)。从那里开始产生报告。

当前的挑战。的视图(约8)。很大很难维护。为了给出一个例子,视图之一输出100个字段。但是这些字段中的每一个都是使用复杂的CASE语句、嵌套的IF语句、内联函数等计算的字段,这使得这个视图高达700行sql代码。我从另一位员工那里继承了这些,现在,不幸的是,,我不得不维护它们。由于数据每周增长数百条记录(通过迁移和事务),视图中的字段数量也在增加(每周几个),因此多维数据集构建所用的时间越来越长。举个例子,几个月前我们重新构建了多维数据集10分钟来刷新数据(这需要5分钟)。目前需要12到15分钟的时间来构建,所以我们每30分钟设置一次。可以想象,随着数据和字段数量的不断增加,情况会变得更糟;我们需要尽可能多的最新数据。

唯一的好处是,一旦构建了多维数据集,报告就会快速加载,因为它们是从第三方平台中提取出来的,所以这里不需要考虑。

我的想法,,我想摆脱视图,这样我就可以简化维护过程,并且保持多维数据集重新构建的最短时间。

选项:

  1. 来构建一个数据仓库。然后构建SSIS包,以使用活动事务数据填充此结构。非规范化结构可能与上述观点非常相似。这里的缺点是,我实际上并不觉得自己简化了太多,实际上增加了一个层,即从OLTP到OLAP (datawarehouse)的数据迁移。我还得重新构建立方体。
  2. 要将当前视图转换为SQL索引视图(物化视图),但在它们的当前状态下,我不能这样做,因为在整个视图中使用了大量的agregate和内联函数。
  3. 我提到的另一个选项是构建一个ODS (操作数据存储库--它将是一个包含与我现在所拥有的sql视图类似的必要表的数据库--并不断刷新它)--可能使用触发器,还是使用事务日志?但我不知道什么涉及建造这样的东西,以及维护有多难。

问题:,我应该采取什么方法?上面的三个有什么意义吗?,当然,我对其他的想法或建议也很感兴趣。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-07-31 18:36:31

根据我的经验,你最好的方法是1。这是昂贵的,但会给你更好的好处。为最佳实践和设计模式创建一个ROLAP DWH(我推荐Kimball的“数据仓库工具包”),如果您有机会使用柱状数据存储(比如amazon redshift或sap sybase iq),那么所有的case语句、嵌套的ifs和您提到的所有操作都将在ETL时间上应用,因此在ROLAP中,所有的东西都是预先计算和优化的。不要忘记使用索引(取决于您使用的依赖技术)。一些数据库供应商已经为ROLAP发布了“索引最佳实践”,因此他们将根据表(维度)的类型和数据类型告诉您索引的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38598948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档