- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个使用 Oracle 数据库 10g 企业版的 OLTP 应用程序,
并计划搭建业务报表层,满足以下需求。
最佳答案
一般来说,我会考虑用于报告用户的 View 层或物化 View 层。除非有具体的性能问题,否则我的偏好是使用 View 来创建偶尔使用查询重写来加速选定报告的物化 View 。
如果您使用物化 View ,您显然会再次物化数据,但其格式将导致存储效率降低。这意味着系统中的大部分空间将分配给非规范化的物化 View 及其索引。这可能会从您的磁盘供应商处产生相当高的帐单,并且可能会引起对 SAN 资源的争用。
物化 View 也意味着 OLTP 和报告用户之间对缓存空间的更多竞争。由于它们存储在不同的对象中,因此正在查找最近事件的报告将无法从 OLTP 事件的缓存中的热块中受益,反之亦然。您可以通过使用 RAM 或将报告移至非高峰时间来缓解此问题,但这不是最有效的解决方案。如果您几乎只有历史报告,这可能没什么大不了的——无论如何都不会共享,因为流程对完全不同的块感兴趣——但如果您有大量的运营报告,它就变得很重要。
物化 View 也可能不太灵活。如果您想以多种方式呈现相同的数据,那么多次物化它会在磁盘和缓存中增加实际成本,并增加定期刷新物化 View 层所需的时间。在实践中,这往往意味着报告用户获得数据的最小公分母 View ,并且在对数据进行切片和切块时必须重新发明轮子,因为 IT 不想为他们创建新的物化 View 。
正如我之前所说,我的偏好是常规 View 层。这避免了多次存储数据的成本,并使在 OLTP 和报告查询之间共享缓存中的块成为可能。它还使向用户提供不同的数据 View 变得相对容易,并且无需让业务用户了解他们报告的数据的陈旧程度。如果由于 OLTP 数据模型不支持您想要运行的查询类型而导致性能成为问题,您可以通过 query rewrite 创建充当索引的目标物化 View 。 .这意味着用户可以查询常规 View ,DBA 可以稍后添加生成全部或部分结果的物化 View ,优化器可以更改查询计划以使用新的物化 View ,而不是扫描表并执行其他操作比如在运行时聚合数据。
在某些时候,您可能希望将报告流量转移到具有更多维度数据模型的真实数据仓库。如果您发现您确实需要物化 View 层而不是常规 View 层的性能,我会强烈考虑使用具有事实和维度的真实数据仓库。您将获得更灵活的报告,与使用完整的物化 View 层可能会遇到的 ETL 问题基本相同。
关于database-design - OLTP 应用程序上的业务报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952772/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
所以我正在开发一个黑 jack 程序,但我有点卡住了。我会警告大家,我对编程真的很陌生,而且,我正在项目中期......所以有一些松散的结局和未使用的变量,以及一些不必要的逻辑(用于测试),但这就是我
我正在尝试创建一个可用作 OpenGL 测试工具的示例程序。到目前为止,我的那个似乎可以工作,但似乎忽略了通过统一变量 MVPMatrix 传递的 MVP 矩阵。当我添加代码以读回制服并检查它是否确实
感谢您帮助我,这是有关我的代码的部分。 printf("Thank you, now please enter the logic gate"); scanf("%s", &C); if (C ==
public static void ejemplosString(String palabra){ char[] letras = palabra.toCharArray();
所以,我有一个 php 应用程序,通过 cgi 和 nginx 运行。我有一个 .jar 程序,用于在条形码打印机(Zebra)上打印条形码,猜猜看是什么!。 我的 php 应用程序使用 exec()
我遇到的唯一问题是 getAll() 方法,它似乎在 PersonnelController 类中的位置立即运行。我也曾在其他很多地方尝试过,但都没有成功。 setAll() 方法看起来不错,我已经测
我是一名优秀的程序员,十分优秀!