用户如今不只须要更复杂和灵活的分析,还须要更及时的信息——数据必须全天候可用,而且在许多业务中用户要求在事件发生的几小时内(在某些状况下,几分钟甚至几秒)内能够访问支持决策的数据。公司还意识到,许多不一样的流程须要使用相同的数据,所以须要使用不一样的配置文件。前端
理想状况下,公司应在功能中立的数据模型中以尽量小的形式保留详细数据,这可让商业公司能够从普遍的观点和流程中提出任意数量的问题。基本前提是:始终能够聚合明细数据,但永远不能分解摘要数据。这并不意味着你永远不该使用摘要表;相反,它意味着您不该仅用摘要数据替换明细数据。数据库
若是所需分析须要明细数据,则不管技术如何,仅使用摘要表将会失败。实施者和用户必须共同努力,以了解业务需求及其驱动因素;而后他们须要使用最低侵入性的过程来知足这些要求。安全
构建摘要表,添加索引,强制执行优先级和非规范化数据的主要缘由是提升性能。若是您可使用任意数量的数据来提出任何问题,并得到即时响应,那么您将永远不须要构建摘要或索引。并发
这些结构能够做为其余限制状况的解决方法。它们的存在须要更多的空间、数据管理以及事件发生和采起有效行动之间的时间。问题是:如何在提升性能、最小化数据复制和数据管理之间取得平衡。框架
优化的七个步骤函数
1、从中性数据模型开始,该模型被规范化而且不特定于任何函数或组工具
提供支持业务目标所需的最低级别的详细信息性能
经过定义的详细程度解决将来需求优化
使用定义详细信息表的视图以得到安全性和并发性cdn
启用访问视图,容许对正在更新的表进行选择(无心图读取)以免锁定问题
2、实现视图以简化导航
帮助工具使用第三方工具和操做视图以建立更好的结构化查询语言(SQL)
提供前端工具可能须要的结构,以建立优化的SQL并消除对前端工具的依赖,了解市场上的每一个数据库
在视图中嵌入优化的链接技术
为表格集成一层安全性
为每一个业务部门提供其本身的逻辑功能化-以用户但愿看到的方式呈现数据
容许数据存储一次,而后经过视图转换,减小数据冗余,确保一致性并简化数据管理
3、添加索引,范围从简单的技术(如二级索引)到复杂的结构(如覆盖索引,链接索引或聚合索引)
提供一个主要优势,由于系统与基础数据表在同时维护它们
为索引附加一些开销,所以要知道影响和权衡,并在成本与收益分析中识别它们
4、使用数据库优先级框架强制肯定优先级,以便在必要时使用资源保护关键的工做负载
优化SQL后,优化索引和视图结构
提供更佳的可用容量使用,但不能提供更多容量
提供对工做负载的更好理解
系统拥挤时吸引人注意;在拥挤时代,要有优先级
让商业公司提供优先方向
5、只有当对更高性能的需求超过度析灵活性时,才进行理性总结和非规范化
遵循共存而非替换的策略,保留详细信息表以进行扩展分析,同时添加非规范化结构
知足多种需求,能够为各类用户和部门提供服务,证实管理成本合理
知足用户社区的更大利益而不要坚持功能目的
数据量和波动率的结果在成本效益分析中起着重要做用
6、考虑“非理性”摘要和非规范化来定制特定业务流程或报告的数据模型
当指望的性能超过灵活分析的需求时,须要结构来解决单个功能时
在考虑成本效益分析时,包括更高的数据管理和资源成本
经过维护基础细节数据来最小化影响;当条件在将来发生变化时,这种不合理的结构能够在几乎没有影响的状况下消除
若是您尚未达到预期的性能,那么还有一个步骤。可是,它的成本相对较高。所以,在继续以前,请确保预期的业务价值将超过使提取的数据与明细数据保持一致所需的额外数据移动和管理的成本。
7、探索,扩展和导出
探索答案集的业务使用状况,并验证业务成果的变化是否会推进预期的收入增加或成本下降,具体取决于应用程序。企业用户是否愿意支持这些指望,而且加强的性能是否可以证实成本合理?
展开当前平台。性能要求是否相当重要,以确保新容量?
将数据从主数据仓库导出到特定于应用程序的平台。在这种状况下,专门针对其应用调整的专用环境将提供对单个应用程序的更多控制。请记住重复数据的全部成本,增长时间延迟,以及须要管理和支持的新平台、软件环境的成本。
反证以上步骤
采起这七个步骤须要了解每一个步骤所涉及的成本以及这样作带来的好处。它还须要作出支持长期和短时间需求的决策。在某些状况下,您能够建立摘要表或添加后来会丢弃的非规范化数据模型。只要丢弃表不会致使中断或大量应用程序更改,这是能够接受的。确保这一点的一种方法是尽量避免使用汇总或非规范化表做为更多下游应用程序的输入。
在应用这七个步骤时,对每一个提议的步骤执行成本效益分析,包括物理方面,例如磁盘空间,管理结构的资源以及因为时间延迟而致使维护机会丢失。
能够从下面几处考虑改进:
查询性能和响应速度
用户并发率
吞吐量
用户满意度和生产力
利用第三方工具
用于执行查询的资源消耗