Greenplum构建实时数据仓库实践
上QQ阅读APP看书,第一时间看更新

1.2.2 分析型系统

在计算机领域,分析型系统是一种快速回答多维分析查询的实现方式。它也是更广泛范畴的所谓商业智能的一部分(商业智能还包含数据库、报表系统、数据挖掘、数据可视化等研究方向)。分析型系统的典型应用包括销售业务分析报告、市场管理报告、业务过程管理(BPM)、预算和预测、金融分析报告及其类似的应用。

1.分析型系统的数据库操作

在数据库层面,分析型系统操作被定义成少量的事务、复杂的查询、处理归档和历史数据。这些数据很少被修改,从数据库抽取数据是最多的操作,也是识别这种系统的关键特征。分析型数据库基本上都是读操作。

2.分析型系统的数据库设计

分析型系统的特征是相对少量的事务,但查询通常非常复杂并且会包含聚合计算,例如今年和去年同时期的数据对比、百分比变化趋势等。分析型数据库中的数据一般来自于一个企业级数据仓库,是整合过的历史数据。对于分析型系统,吞吐量是一个有效的性能度量指标。

在数据库逻辑设计上,分析型数据库使用多维数据模型,通常被设计成星型模式或雪花模式。关于多维数据模型的概念及其相关内容,会在第2章“数据仓库设计基础”中作详细说明。

在数据库物理设计上,依然以Oracle数据库为例,简要说明在设计分析型系统数据库时应该考虑的一些问题。

● 表分区。可以独立定义表分区的物理存储属性,将不同分区的数据存放到多个物理文件上。这样做一方面可以分散I/O;另一方面,当数据量非常大时,方便维护数据;再有就是利用分区消除查询数据时,不用扫描整张表,从而提高查询性能。

● 位图索引。当查询条件中包含低基数(不同值很少,例如性别)的列,尤其是包含这些列上的or、and或not这样的逻辑运算时,或者从有大量行的表中返回大量的行时,应考虑位图索引。

● 物化视图。物化视图物理存储查询所定义的数据,能够自动增量刷新数据,并且可以利用查询重写特性极大地提高查询速度,是分析型系统常用的技术。

● 并行化操作。可以在查询大量数据时执行并行化操作,这样可使多个服务器进程为同一个查询语句工作,使该查询得以快速完成,但是会耗费更多的资源。

随着数据的大量积累和大数据时代的到来,人们对于数据分析的依赖越来越强,因此分析型系统也随之越来越显示出其重要性。举一个简单的例子,在一家医院中,保存有20年的非常完整的病人信息。医院领导想看到最常见的疾病、成功治愈率、实习医生的实习天数等相关数据的详细报告。为了满足这个需求,应用分析型系统查询医院信息数据仓库,并通过复杂查询得到结果,然后将报告提交给领导做进一步分析。