转自:http://hi.baidu.com/sheenshine/item/ff5ee7f65e3cd1c0a935a2d6
Essbase是什么?
Essbase的名字其实是Extended SpreadSheet dataBase。
这个大概是为什么essbase能够和excel工具深度集成的原因,因为essbase很多设计都是来源于excel等工具对于分析的限制和不足。但是excel不失为essbase的一个非常友好的前端,对于非常习惯使用Excel工具的业务人员,他们可以非常容易地使用和分析essbase里的数据,Oracle里关于Essbase卖点的一个经常使用的场景是:当业务人员把数据放在多种表格的时候,到了最后他都不知道哪张表格的数据是最新的,而如果把所有的数据都放在essbase里的时候,你可以轻易地得到最新的数据并且分析数据和数据之间的关系。和传统的oltp类型的数据库不一样,oltp用实体和关系来描述对象,而多维数据库,则使用度量和维度来描述对象。在做多维设计的时候,其实就是考虑关于度量和维度的设计,比如销售额就是一个典型的度量,而销售地区就是一个典型的维度,但是在essbase里,度量也是一种特殊的维度,叫account维度,这个是和有些OLAP服务器概念上有所区别的,这样的定义方式能够很方便地使用维度的操作方式访问度量,而且应该说在MDX这种标准多维查询语言里,度量和维度的确没有本质的区分。(大意是你可以把essabase想像成多张叠起来的excel表格,不仅仅在单张excel上可以进行表格之间的各种运算,在多张excel表格之间也可以做各种累计运算!)
Essbase的一般设计
对于MOLAP数据库一个通常的观念是MOLAP不能存储很大的数据量,当essbase以BSO(块存储)来存储多维数据的时候(传统方式),则称之为Essbase Analytic module,这种传统方式对于维度数据非常多,数据量非常庞大的时候的处理性能一般,这个也是造成许多人认为MOLAP多维数据库不适合分析非常大量的数据的方式的缘由,但是BSO存储方式能够更好地支持大量回写的应用,如what-if分析,并且能够提供更好的分析功能。
当数据量很大或者多于10个维度的时候,essbase建议使用ASO聚合存储方式来压缩存储的数据(据说性能在这种方式下能够快几十倍,而存储量能减少几十倍),使用这种存储方式就称之为Enterprise Analytic Module,从而提供了修正这种MOLAP大数据量限制的很好的方式。这种存储方式用于分析维度数量比较多,同时并非每个维度的数据都很稠密的时候是性能会非常好,可以处理大量的数据,这两种不同的存储,对于上层应用透明,在同一个应用里可以混合使用。
多维数据库的设计(维度和度量)在essbase里称之为outline,以.otl的后缀存储,一个典型的多维数据库设计过程是包括:先需要通过admin console创建一个outline。
在outline里定义维度和层次和累计方式,然后就是通过admin console编辑数据加载规则来把外部数据按照设计好的outline加载到essbase数据库里。(其实essbase提供了非常丰富的api接口,也可以使用api来创建和修改outline)
加载规则基本上有三种方式:
然后使用计算脚本计算生成立方体里的其他所需要的数据,就可以通过excel或者BI工具来访问和分析多维数据库里的数据了。
- 一是通过文本文件加载。
- 二是通过Open sql的方式从ODBC数据源加载。
- 最后一种是使用ETL工具进行加载。