• 1. 什么是联机分析处理(OLAP) 联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的. OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
  • 2. OLAP逻辑概念和典型操作逻辑概念有:维(Dimension),级别(Level),成员(Member),度量(Measure)。 典型操作有:钻取(Drill-up和Drill-down)、切片(Slice)和切块(Dice)、以及旋转(Pivot)等。
  • 3. 维(Dimension)是人们观察数据的特定角度,是考虑问题时的一类属性,属性集合构成一个维(时间维、地理维等)。
  • 4. 级别(Level)人们观察数据的某个特定角度(即某个维)还可以存在细节程度不同的各个描述方面(时间维:日期、月份、季度、年)。 即维的级别。
  • 5. 成员(Member)维的一个取值,是数据项在某维中位置的描述。(“某年某月某日”是在时间维上位置的描述)。
  • 6. 度量(Measure)多维数组的取值。(2000年1月,上海,笔记本电脑,$100000)。
  • 7. 钻取(Drill-up和Drill-down)是改变维的层次,变换分析的粒度。它包括向下钻取(Drill-down)和向上钻取(Drill-up)/上卷(Roll-up)。Drill-up是在某一维上将低层次的细节数据概括到高层次的汇总数据,或者减少维数;而Drill-down则相反,它从汇总数据深入到细节数据进行观察或增加新维。
  • 8. 切片(Slice)和切块(Dice)是在一部分维上选定值后,关心度量数据在剩余维上的分布。如果剩余的维只有两个,则是切片;如果有三个或以上,则是切块。
  • 9. 旋转是变换维的方向,即在表格中重新安排维的放置(例如行列互换)。
  • 10. OLAP系统的体系结构和分类 OLAP系统按照其存储器的数据存储格式可以分为关系OLAP(RelationalOLAP,简称ROLAP)、多维OLAP(MultidimensionalOLAP,简称MOLAP)和混合型OLAP(HybridOLAP,简称HOLAP)三种类型。 这里我们只对ROLAP进行介绍
  • 11. 关系型联机分析处理(ROLAP,Relational OLAP) ROLAP将分析用的多维数据存储在关系数据库中,并根据应用的需要有选择的定义一批实视图作为表也存储在关系数据库中。
  • 12. ROLAP的具体实施方法顾名思义,关系型联机分析处理是以关系型数据库为基础的。唯一特别之处在于联机分析处理中的数据结构组织的方式。 让我们考察一个例子。
  • 13. 假设我们要进行产品销售的财务分析,分析的角度包括时间、产品类别、市场分布、实际发生与预算四方面内容,分析的财务指标包括:销售额、销售支出、毛利(=销售额-销售支出)、费用、纯利(=毛利-费用)等内容,则我们可以建立如下的数据结构:
  • 14. 该数据结构的中心是主表,里面包含了所有分析维度的外键,以及所有的财务指标,我们称之为事实表(Fact Table)。 周围的表分别是对应于各个分析角度的维表(Dimension Table),每个维表除了主键以外,还包含了描述和分类信息。无论原来的业务数据的数据结构为何,只要原业务数据能够整理成为以上模式,则无论业务人员据此提出任何问题,都可以用SQL语句进行表连接或汇总(table join and group by)实现数据查询和解答。 这种模式被称为星型模式(Star-Schema),可应用于不同的联机分析处理应用中。
  • 15. 以下是另一个采用星型模式的例子,分析的角度和指标截然不同,但数据结构模式一样。我们看到是表的结构:
  • 16. 有时候,维表的定义会变得复杂,例如对产品维,既要按产品种类进行划分,对某些特殊商品,又要另外进行品牌划分,商品品牌和产品种类划分方法并不一样。 因此,单张维表不是理想的解决方案,可以采用以下方式,这种数据模型实际上是星型结构的拓展,我们称之为雪花型模式(snow-flake schema).
  • 17. (本页无文本内容)
  • 18. 后记无论采用星型模式还是雪花型模式,关系型联机分析处理都具有以下特点: • 数据结构和组织模式需要预先设计和建立; • 数据查询需要进行表连接,在查询性能测试中往往是影响速度的关键; • 数据汇总查询(例如查询某个品牌的所有产品销售额),需要进行Group by 操作,虽然实际得出的数据量很少,但查询时间变得更长; • 为了改善数据汇总查询的性能,可以建立汇总表,但汇总表的数量与用户分析的角度数目和每个角度的层次数目密切相关。例如,用户从8个角度进行分析,每个角度有3个汇总层次,则汇总表的数目高达3的8次方。 可以采取对常用汇总数据建立汇总表,对不常用的汇总数据进行Group by 操作,这样来取得性能和管理复杂度之间的均衡。