【问题标题】:Database (OLTP) and Reporting数据库 (OLTP) 和报告
【发布时间】:2016-11-30 15:17:23
【问题描述】:

我正在开发一个交易平台,该平台将报告作为其业务的很大一部分。

设置如下: SQL OLTP 数据库(大约 200 个表)——记录数量相当少。 (20,000 条记录是最大的表——但每周都在不断增长) 对于报告服务,SQL 视图用于查询实时交易数据库。本着数据仓库方法的精神,想象一下视图的结果集是非规范化的。然后将这些数据集传递到第三方报告平台(如 Tableau、Power Bi 或 SiSense),该平台将这些数据集放入 Cube(可能是一些柱状结构,如 mono db、hadoop 等)。从那里生成报告。

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

唯一的好处是,一旦构建了多维数据集,报告加载速度很快,因为它们是从 3rd 方平台拉出来的,所以这里不用担心。

我的想法 我想摆脱这些视图,这样我就可以简化维护过程,并至少保持立方体重建的持续时间。

选项:

  1. 构建数据仓库。然后构建 SSIS 包以使用实时事务数据填充此结构。去规范化的结构可能看起来与上面提到的视图非常相似。这里的缺点是我真的觉得我并没有简化太多,实际上增加了一层,即从 OLTP 到 OLAP(数据仓库)的数据迁移。而且我仍然需要重新构建立方体。
  2. 要将当前视图转换为 SQL 索引视图(物化视图),但在它们的当前状态下,我根本做不到,因为在整个视图中大量使用了聚合和内联函数。
  3. 另一个我很喜欢的选项是构建一个 ODS(操作数据存储 - 这将是一个数据库,其中包含类似于我现在拥有的 sql 视图的必要表 - 并不断刷新它)也许使用触发器,或者,事务日志?但我不确定构建这样的东西涉及什么以及维护起来有多难。

问题: 我应该采取什么方法? 以上3个中的任何一个有意义吗? 当然,我也对其他想法或建议感兴趣。

谢谢!

【问题讨论】:

    标签: reporting-services data-warehouse business-intelligence


    【解决方案1】:

    根据我的经验,您最好的方法是 1. 成本高,但会给您带来更好的收益。创建一个 ROLAP DWH(我推荐 Kimball 的“数据仓库工具包”以获得最佳实践和设计模式),如果您有机会使用列式数据存储(如 amazon redshift 或 sap sybase iq)和所有案例语句,嵌套 ifs并且您提到的所有操作都将在 ETL 时间上应用,因此在 ROLAP 中,所有内容都已预先计算并针对消耗进行了优化。并且不要忘记应用索引(取决于您使用的依赖技术)。一些数据库供应商已经发布了 ROLAP 的“索引最佳实践”,因此他们会根据表的类型(维度)和数据类型告诉您应用哪种类型的索引。

    【讨论】:

    • 嗨 Luis Leal。感谢你的回复。是的,数字 1 是我的第一个选项,但目前数据通过 SiSense 中的多维数据集每 30 分钟刷新一次,我们希望保持不变,不超过 30 分钟。因此,通过构建数据仓库,意味着我将通过另一个层(即 ETL)增加流程的复杂性,这将延长数据刷新的时间。
    • 因此,现在不是一个进程,而是通过直接从 Live 中提取的 SQL 视图,将是具有必要逻辑(所有这些案例语句)的包,它将实时提取数据形式进入 DW。那么 SiSense 多维数据集仍然需要从这些数据仓库表中提取它。此外,他们不断更改如何通过案例语句提取这些字段的逻辑,我想知道维护是否不会更糟,在 SSIS 中进行,而不是在 SQL 视图中进行。所以,我仍然很困惑什么是最好的方法。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多