2009年3月12日星期四

Linux - 网络配置

网络信息查看

查看网路接口信息

1.了解linux中的网络接口设备

$/sbin/ifconfig 查看所有活动网络接口信息,其中包括一个lo环回端口。

2.查看指定网络接口的信息

$/sbin/ifconfig <网络接口名称> 查看指定接口信息。

3.查看系统中所有网络接口的信息

$/sbin/ifconfig –a 查看所有接口信息,包括非活动状态接口。

注:普通用户查看网络接口信息时,需要在命令前加“/sbin”,而管理员却不用。这是由于命令搜索路径的原因,可以通过“$echo $PATH”查看。

查看网关地址和路由信息

1、查看主机路由信息

#/route

显示当前linux主机中的路由表信息。

#/route |grep default

在route命令的显示结果中以“default”开始的行显示了,主机的默认网关地址,将route命令和grep命令组合,使用过滤route命令的显示结果只显示默认网关地址。

2.测试与其它主机的网络链接

$ping 目的主机地址

使用ping命令测试与其它主机的网络链接。ctrl+C终止。

$ping –c <测试数据包数量> <目的主机地址>

使用ping命令发送指定数量的数据包进行网络链接测试。

$使用ping命令进行网络链接测试的技巧。

注:当ping命令测试不成功时并不能判断当前主机到目标主机的连接是断开的,因为有很多因素,(如网络防火墙等)可以导致网络连接正常时主机之间无法ping通。

3、测试与其它主机的网络链接路径

$traceroute <目的主机地址>

traceroute命令显示当前主机与目的主机之间经过的所,有网络节点的地址,以及当前主机到每个中间结点的连接状态。

查看主机名称信息

1、查看当前主机名称

$Hostname 查看当前的主机名。

2、使用dns服务器查询域名

$Nslookup

交互模式:通常用于对DNS服务器进行测试

直接模式:用于查询某个域名对应的ip地址

使用网络命令进行网络设置

网络设置的方法

1、DHCP网络配置

$Dhclient 使用dhclient命令可以从DHCP服务器中申请新的网络配置应用到当前主机。

注:DHCP服务器通常提供给DHCP客户端最基本的网络配置信息,包括:接口ip地址,默认网关,DNS

服务器地址。

2、手工网络配置

网络接口ip地址和子网掩码

默认网关地址

当前主机名称

DNS服务器地址

Ip地址配置命令

Ifconfig <网络接口名称> network <子网掩码>

例:# ifconfig eth0 192.168.1.222 netmask 255.255.255.0

注:手工配置linux网络只限于临时使用,配置不保存。

扩展:# ifconfig eth0:1 10.0.0.1 netmask 255.0.0.0 一块网卡配置多个子ip地址。

# ifconfig eth0 hw ether MAC地址 修改网卡的mac地址,

路由配置命令

1、删除默认网关路由

$Route del default gw <默认网关地址>

2、添加默认网关路由

$Route add default gw <默认网关地址>

例:#route add default gw 192.168.1.1

主机名称配置命令

# hostname 123

将主机暂时名称改为123。

DNS域名解析

Nslookup

>server

显示linux系统中使用的DNS服务器地址,也可临时设置生效。

修改配置文件进行网络设置

使用工具进行网络设置

# Netconfig 图形界面设置网络,重启network后生效。

界面中需要填写的内容:

主机网络接口的ip地址。

网络接口的子网掩码。

默认网关地址。

主DNS服务器的ip地址。

网络服务启动脚本

/etc/init.d/network 从新启动才能生效

扩展:# /etc/rc.d/init.d/network start 启动network

# /etc/rc.d/init.d/network stop 停止network

# /etc/rc.d/init.d/network restart 重启network

网络接口配置文件

/etc/sysconfig/network-scripts/ifconfg-*

DEVICE=eth0 网卡编号

ONBOOT=yes 开机时是否启动网卡。

BOOTPROTO=static 静态ip或者DHCP动态获取。

IPADDR=192.168.1.163 ip

NETMASK=255.255.255.0 掩码

GATEWAY=192.168.1.1 网关

以下为动态获取方式:

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=dhcp

停止和启动指定的网络接口

单个网络接口的配置进行修改后

Ifdown 网络接口名称 停止某个网络接口。

Ifup 网络接口名称 开启某个网络接口。

注:单个网络接口的配置文件进行修改后,不必每次都从新启动network服务使配置文件生效,可用以上命令。

扩展:对网络接口操作:

# ifconfig eth0 down 停止eth0接口

# ifconfig eth0 up 开启eth0接口

可以连续使用

Ifdown eth0 ; ifup eth0

主机名称配置文件

/etc/sysconfig/network

例:# vi /etc/sysconfig/network 使用vi编辑器打开主机名配置文件。

NETWORKING=yes 网络是否可用。

HOSTNAME=xxxx xxxx为新设置的主机名。

本地主机名称解析文件

/etc/hosts

Hosts 和 DNS具有类似的主机名称解析功能

域名服务器配置文件

/etc/resolv.conf

最多可以设置3行,前面的生效。

注意:修改网络设置后,需要Reboot才能生效。

HW - DELL OptiPlex 755上使用Oracle VM

注意点:
1、在做Image的Dell机器上,必须在BIOS里把Drivers设置成Legency才可以,怀疑是OVM对Driver的支持不够;
2、在另外的机器装上OVM Manager,对所有的VM进行管理,类似于用EM管理不同的Oracle DB Instance。

DW - 什么是数据仓库

数据仓库

http://baike.baidu.com/view/69883.htm

Data Warehousing - Wikipedia http://en.wikipedia.org/wiki/Data_warehouse
  1.
  数据仓库是一个面向主题的、集成的、不可更新的、随时间不断变化的数据集合,它用于支持企业或组织的决策分析处理。
  数据仓库,英文名称为Data Warehouse,可简写为DW
  数据仓库之父Bill Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
  ◆面向主题:操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。
  ◆集成的:数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
  ◆相对稳定的:数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。
  ◆反映历史变化:数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
  数据仓库是一个过程而不是一个项目。
  数据仓库系统是一个信息提供平台,他从业务处理系统获得数据,主要以星型模型和雪花模型进行数据组织,并为用户提供各种手段从数据中获取信息和知识。
  从功能结构化分,数据仓库系统至少应该包含数据获取(Data Acquisition)、数据存储(Data Storage)、数据访问(Data Access)三个关键部分。
  企业数据仓库的建设,是以现有企业业务系统和大量业务数据的积累为基础。数据仓库不是静态的概 念,只有把信息及时交给需要这些信息的使用者,供他们做出改善其业务经营的决策,信息才能发挥作用,信息才有意义。而把信息加以整理归纳和重组,并及时提 供给相应的管理决策人员,是数据仓库的根本任务。因此,从产业界的角度看,数据仓库建设是一个工程,是一个过程。
  整个数据仓库系统是一个包含四个层次的体系结构,具体由下图表示。
  数据仓库系统体系结构
  ·数据源:是数据仓库系统的基础,是整个系统的数据源泉。通常包括企业内部信息和外部信息。内部信息包括存放于RDBMS中的各种业务处理数据和各类文档数据。外部信息包括各类法律法规、市场信息和竞争对手的信息等等;
  ·数据的存储与管理:是整个数据仓库系统的核心。数据仓库的真正关键是数据的存储和管理。数据 仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。要决定采用什么产品和技术来建立数据仓库的核心,则需要从数据仓库的 技术特点着手分析。针对现有各业务系统的数据,进行抽取、清理,并有效集成,按照主题进行组织。数据仓库按照数据的覆盖范围可以分为企业级数据仓库和部门 级数据仓库(通常称为数据集市)。
  ·OLAP服务器:对分析需要的数据进行有效集成,按多维模型予以组织,以便进行多角度、多层 次的分析,并发现趋势。其具体实现可以分为:ROLAP、MOLAP和HOLAP。ROLAP基本数据和聚合数据均存放在RDBMS之中;MOLAP基本 数据和聚合数据均存放于多维数据库中;HOLAP基本数据存放于RDBMS之中,聚合数据存放于多维数据库中。
  ·前端工具:主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以数据挖掘及各种基于数据仓库或数据集市的应用开发工具。其中数据分析工具主要针对OLAP服务器,报表工具、数据挖掘工具主要针对数据仓库。
  目前,数据仓库一词尚没有一个统一的定义,著名的数据仓库专家W.H.Inmon在其著作 《Building the Data Warehouse》一书中给予如下描述:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。对于数据仓库的概念我们可以从两个层次予以理解,首先,数据仓库用于支持决策,面向分析型数据处理,它不 同于企业现有的操作型数据库;其次,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般 不再修改。多维
  数据仓库的组成
  数据仓库数据库
  是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。相对于操纵型数据库来说其突出的特点是对海量数据的支持和快速的检索技术。
  数据抽取工具
  把数据从各种各样的存储方式中拿出来,进行必要的转化、整理,再存放到数据仓库内。对各种不同 数据存储方式的访问能力是数据抽取工具的关键,应能生成COBOL程序、MVS作业控制语言(JCL)、UNIX脚本、和SQL语句等,以访问不同的数 据。数据转换都包括,删除对决策应用没有意义的数据段;转换到统一的数据名称和定义;计算统计和衍生数据;给缺值数据赋给缺省值;把不同的数据定义方式统 一。
  元数据
  元数据是描述数据仓库内数据的结构和建立方法的数据。可将其按用途的不同分为两类,技术元数据和商业元数据。
  技术元数据是数据仓库的设计和管理人员用于开发和日常管理数据仓库是用的数据。包括:数据源信 息;数据转换的描述;数据仓库内对象和数据结构的定义;数据清理和数据更新时用的规则;源数据到目的数据的映射;用户访问权限,数据备份历史记录,数据导 入历史记录,信息发布历史记录等。
  商业元数据从商业业务的角度描述了数据仓库中的数据。包括:业务主题的描述,包含的数据、查询、报表;
  元数据为访问数据仓库提供了一个信息目录(informationdirectory),这个 目录全面描述了数据仓库中都有什么数据、这些数据怎么得到的、和怎么访问这些数据。是数据仓库运行和维护的中心,数据仓库服务器利用他来存贮和更新数据, 用户通过他来了解和访问数据。
  访问工具
  为用户访问数据仓库提供手段。有数据查询和报表工具;应用开发工具;管理信息系统(EIS)工具;在线分析(OLAP)工具;数据挖掘工具。
  数据集市(DataMarts)
  为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题 数据(subjectarea)。在数据仓库的实施过程中往往可以从一个部门的数据集市着手,以后再用几个数据集市组成一个完整的数据仓库。需要注意的就 是再实施不同的数据集市时,同一含义的字段定义一定要相容,这样再以后实施数据仓库时才不会造成大麻烦。
  数据仓库管理:安全和特权管理;跟踪数据的更新;数据质量检查;管理和更新元数据;审计和报告数据仓库的使用和状态;删除数据;复制、分割和分发数据;备份和恢复;存储管理。
  信息发布系统:把数据仓库中的数据或其他相关的数据发送给不同的地点或用户。基于Web的信息发布系统是对付多用户访问的最有效方法。
  设计数据仓库的九个步骤
  1)选择合适的主题(所要解决问题的领域)
  2)明确定义fact表
  3)确定和确认维
  4)choosing the facts
  5)计算并存储fact表中的衍生数据段
  6)roundingoutthedimensiontables
  7)choosingthedurationofthedatabase
  8)theneedtotrackslowlychangingdimensions
  9)确定查询优先级和查询模式。
  技术上
  硬件平台:数据仓库的硬盘容量通常要是操作数据库硬盘容量的2-3倍。通常大型机具有更可靠的 性能和和稳定性,也容易与历史遗留的系统结合在一起;而PC服务器或UNIX服务器更加灵活,容易操作和提供动态生成查询请求进行查询的能力。选择硬件平 台时要考虑的问题:是否提供并行的I/O吞吐?对多CPU的支持能力如何?
  数据仓库DBMS:他的存储大数据量的能力、查询的性能、和对并行处理的支持如何。
  网络结构:数据仓库的实施在那部分网络段上会产生大量的数据通信,需不需要对网络结构进行改进。
  实现上
  建立数据仓库的步骤
  1)收集和分析业务需求
  2)建立数据模型和数据仓库的物理设计
  3)定义数据源
  4)选择数据仓库技术和平台
  5)从操作型数据库中抽取、净化、和转换数据到数据仓库
  6)选择访问和报表工具
  7)选择数据库连接软件
  8)选择数据分析和数据展示软件
  9)更新数据仓库
  数据抽取、清理、转换、和移植
  1)数据转换工具要能从各种不同的数据源中读取数据。
  2)支持平面文件、索引文件、和legacyDBMS。
  3)能以不同类型数据源为输入整合数据。
  4)具有规范的数据访问接口
  5)最好具有从数据字典中读取数据的能力
  6)工具生成的代码必须是在开发环境中可维护的
  7)能只抽取满足指定条件的数据,和源数据的指定部分
  8)能在抽取中进行数据类型转换和字符集转换
  9)能在抽取的过程中计算生成衍生字段
  10)能让数据仓库管理系统自动调用以定期进行数据抽取工作,或能将结果生成平面文件
  11)必须对软件供应商的生命力和产品支持能力进行仔细评估
  主要数据抽取工具供应商:Prismsolutions.Carleton'sPASSPORT.InformationBuildersInc.'s
  EDA/SQL.SASInstituteInc.
  数据仓库带来了什么
  每一家公司都有自己的数据。并且,许多公司在计算机系统中储存有大量的数据,记录着企业购买、销售、生产过程中的大量信息和客户的信息。通常这些数据都储存在许多不同的地方。
  使用数据仓库之后,企业将所有收集来的信息存放在一个唯一的地方——数据仓库。仓库中的数据按照一定的方式组织,从而使得信息容易存取并且有使用价值。
  目前,已经开发出一些专门的软件工具,使数据仓库的过程实现可以半自动化,帮助企业将数据倒入数据仓库,并使用那些已经存入仓库的数据。
  数据仓库给组织带来了巨大的变化。数据仓库的建立给企业带来了一些新的工作流程,其他的流程也因此而改变。
  数据仓库为企业带来了一些“以数据为基础的知识”,它们主要应用于对市场战略的评价,和为企业发现新的市场商机,同时,也用来控制库存、检查生产方法和定义客户群。
  每一家公司都有自己的数据。数据仓库将企业的数据按照特定的方式组织,从而产生新的商业知识,并为企业的运作带来新的视角。
  为何要建立数据仓库
  计算机发展的早期,人们已经提出了建立数据仓库的构想。“数据仓库”一词最早是在1900年,由Bill Inmon先生提出的,其描述如下:数据仓库是为支持企业决策而特别设计和建立的数据集合。
  企业建立数据仓库是为了填补现有数据存储形式已经不能满足信息分析的需要。数据仓库理论中的一个核心理念就是:事务型数据和决策支持型数据的处理性能不同。
  企业在它们的事务操作收集数据。在企业运作过程中:随着定货、销售记录的进行,这些事务型数据也连续的产生。为了引入数据,我们必须优化事务型数据库。
  处理决策支持型数据时,一些问题经常会被提出:哪类客户会购买哪类产品?促销后销售额会变化多 少?价格变化后或者商店地址变化后销售额又会变化多少呢?在某一段时间内,相对其他产品来说哪类产品特别容易卖呢?哪些客户增加了他们的购买额?哪些客户 又削减了他们的购买额呢?
  事务型数据库可以为这些问题作出解答,但是它所给出的答案往往并不能让人十分满意。在运用有限 的计算机资源时常常存在着竞争。在增加新信息的时候我们需要事务型数据库是空闲的。而在解答一系列具体的有关信息分析的问题的时候,系统处理新数据的有效 性又会被大大降低。另一个问题就在于事务型数据总是在动态的变化之中的。决策支持型处理需要相对稳定的数据,从而问题都能得到一致连续的解答。
  数据仓库的解决方法包括:将决策支持型数据处理从事务型数据处理中分离出来。数据按照一定的周 期(通常在每晚或者每周末),从事务型数据库中导入决策支持型数据库——既“数据仓库”。数据仓库是按回答企业某方面的问题来分“主题”组织数据的,这是 最有效的数据组织方式。
  数据仓库和数据集市
  有关决策支持型数据库的数据集市是面向企业中的某个部门或是项目小组的。一些专家顾问将数据集 市的建造描述为建立数据仓库全过程中的一步。首先,一个储存企业全部信息的数据仓库被创建,其中,数据均具备有组织的、一致的、不变的格式。数据集市随后 被创立,其目的是为不同部门提供他们所需要的那部分信息。数据仓库聚集了所有详细的信息,而数据集市中的数据则是针对用户们的特定需求总结而出的。
  而另外一些专家则认为数据集市的建立并不需要首先建立一个数据仓库。在这个模型中,数据直接由事务型数据库转入数据集市中。一个公司可能建立有多个数据集市,而彼此之间毫无联系。
  这种不在建立数据仓库的基础上创建数据集市的方式会更便宜、更快速,因为它的规模更加易于管理。
  第二种观点的缺陷在于无法实现最初创建数据仓库的最主要的目的——将企业所有的数据统一为一致 的格式。现有的事务处理系统的数据往往是不一致、冗余的。如果首先建立起一个全公司范围的数据仓库,组织就能够获得一个统一关于企业的活动和客户的知识 库。如果先建立起一个个独立的数据集市,那么数据仓库的诸多优势都能够得以实现,但是企业远远无法做到对数据的一致的储存。

DW - Concepts

一站式分析 如果从报表的角度上来说明的话可以解释为从数据准备、处理、定制、展现、应用、审核、平衡、存档、分发等一系列流程;

DM:Data Market 数据集市, 小型的,面向部门或工作组级数据仓库,主要用于完成特定的主题;

DM: Data Mining, 数据挖掘;

DW:Data Warehouse 面向主题的,稳定的,随时间变化的,把大量数据加以整理归纳,并及时提供给相应的管理决策人员,供他们做出改善其业务经营的决策,使信息发挥作用;

ODS:Operation Data Storage 是一个集成了来自不同数据库数据的环境。其目的是为终端用户提供一致的企业数据集成视图。它可以帮助用户轻松应对跨多个商业功能的操作挑战,是面向主题的、集成的、近实时的数据存储;

ETL:Extract-Transform-Load TL的过程就是数据流动的过程,从不同异构数据源流向统一的目标数据。其间,数据的抽取、清洗、转换和装载形成串行或并行的过程;

ELT: 利用Target RDBMS本身的SQL功能,实现数据转换,大数据量时效率比ETL要高;

MD:Metadata 是描述/定义数据的数据,如维度信息,Cube信息等。

ETL常见问题&解决办法

2009-03-05 11:38 IP:222.35.117.*(北京市)
楼主

1)数据缺失问题。在数据整合中最大的问题就是数据缺失问题,比如说这边运营没有系统,缺失了很多运营指标相关的数据。

解决办法:是通过手动方式录入/上报数据,注意上报要按照统一的规范进行(客户一般是填到标准的模版里。)

2)数据准确性问题。

由于业务人员, IT人员、业务系统开发人员对数据的理解层次不一样,指标和维度的定义者和使用者对业务语言、业务指标、业务维度的理解存在差异,造成业务语言、指标、维度的混淆和不统一。

解决办法:需要业务人员、IT人员、业务系统开发商与数据整合服务商通力合作,通过调查问卷、C/U矩阵,明确业务指标和业务维度,不可靠某一方来单独处理。

3)数据更新问题。

随着业务的发展,业务数据的累积,必然引出一系列的数据更新、同步化问题,如何将已变化的数据准确、及时的抽取、转换、加载到目标数据仓库已成为数据整合中的重要问题。

解决办法:选用合适的ETL工具(BO Data Integrator/Pervasive),建立数据更新日志。定时监控数据更新情况,确保数据质量,更好的保证前端展现的效果。

4)数据减压问题:

各个业务系统数据库中积累了大量的数据,负责抽取数据的服务器已经承载了巨大的数据压力,面对数据库和系统长时间的响应时间,业务人员、领导决策部门只能无奈的等待。

解决办法:将大量数据向特定数据转换,从系统架构和硬件配置方面解决,可使用OLAP Server,准备和计算、定义好多维数据进行显示,(注:虽然展示的速度较快,但可能要多投入更多成本,确定维度组合的工作量较大,并且不能随意钻取。)

Essbase - Overview

Hyperion essbase入门(一)安装
2009-02-19 00:15

转自:http://www.iniu.net/iwork/2008/01/hyperion-bi.html

在配置Hyperion的测试环境的时候,感觉相比较Oracle以前的Oracle DB(可能包含OLAP)+OWB(或ODI)+BIEE方案而言,Hyperion的产品看起来要更加复杂一些,而且每个产品都是独立的安装介质,我开 始创建完essbase数据库和安装完smartview for office之后,发现excel怎么样都无法连接到我已经创建的essbase数据库,后来看了一些材料才知道还需要安装essbase provider服务进行provider配置才可以。所以本文的目的是解释Hyperion的各个必要的组件来介绍如何能够搭建一个可供自己学习使用的 essbase的设计和测试的环境。个人觉得使用excel来操作essbase是最直观最好用(大部分业务人员的最爱)的方法,所以本文介绍的是如何能 够开始进行essbase的OLAP设计和如何能用excel来查看操作和使用essbase里的数据。

需要安装什么?
根据我们的目标(能够进行essbase设计和使用excel进行数据操作),首先需要安装一个关系数据库产品(如 Oracle,SQLSERVER等),Hyperion需要把自己的一些产品的组合配置信息存储在关系数据库里,这个数据库需要先建立好一个用户和密 码,到时候需要输入到配置界面里(需要连接数据库的配置界面主要有两个地方,一个是配置shared service的数据库配置,另一个是安装reporting and analysis service的时候的进行配置)。

Hyperion整个安装首先需要安装的是shared service(除了数据库,其他部件的安装次序不是非常重要,因为安装完后才需要使用configuration utility进行配置,而且也可以选择安装了但先不配置,等到最后依次做配置)。这部分属于Hyperion模块的一个公共部分,shared service主要完成的功能是用户的管理,即注册到shared service里的模块都可以使用shared service进行统一的用户管理。

安装完shared service的时候可以发现会出现openldap模块和Apache tomcat模块(当然shared service可以选择被部署到weblogic或者其他商用应用服务器上),openldap模块被用于内置用户的管理,即通过shared service创建的用户可以被放在openldap里,当然其实Hyperion的用户管理也可以集成外部的ldap的用户。

下一个需要安装的就是我们做分析的核心服务essbase(又称之为analytic service),windows平台的安装就是跟着向导一个劲地点下一步!

然后还需要安装analytic administration service,这个是essbase的一个图形界面(管理控制台),对于essbase数据库的创建,对于多维模型的创建,配置数据的加载,建立计算脚 本等都是通过administration service的console进行的,安装完这个服务之后就可以使用console开始进行多维模型的设计了。

一开始觉得奇怪的是如果需要通过嵌在excel的smart view来查看到essbase里的数据,则还需要安装一个provider服务,然后通过console配置添加provider服务之后才可以通过集 成在excel的smart view去通过provider来查看和操作数据。当然,如果是通过安装essbase客户端来集成excel的话则就不需要安装这个provider服 务了。

需要说明的是上面这些安装都有自己独立的安装文件,需要一个一个单独安装,那么这些模块安装好之后如何连起来使用呢?比如说既然每个模块安装的顺序可以不 固定,如何让这些模块中一起使用相同的用户进行管理呢?答案是通过configuration utility工具,这个配置工具可以配置具体的模块向shared service进行注册,注册之后的模块就可以通过shared service进行验证了。如下图(点击查看大图):
hyperion2-2.jpg 是一个configuration utility的配置界面,除了shared services,其他每个模块都需要配置成注册到shared services里,整个配置过程还是比较简单的。对于这行图形的配置方式不习惯的地方是,如果配置出了错,就比较难以解决,我觉得要是提供手工的修改一 些配置文件的额外方法,对于配置的查错可能会更容易一些!

通过运行配置工具就可以完成各个独立安装的各个模块之间的一个连接配置,我们所说过的组件就可以配合在一起使用了。这个时候我们就可以开始进行多维分析设计和使用excel进行数据的录入或者分析了!

对了,记住缺省的admin console的用户名是admin,密码是password,一开始我找了半天都没找到,还是问了人才知道的,简直是什么事呀,需要注意的是安装 essbase的时候会提示输入另外的用户名和密码,那个是属于essbase数据库的密码,和管理密码是两回事,比如在配置excel连接 essbase的时候,输入的是essbase数据库的密码而不是admin!

额外BI模块的安装
虽然安装完上面的模块就可以进行简单的essbase验证了,但是事实上一个完整的bi环境是还需要安装BI展现工具的,9.3.1的 Hyperion版本的的所有BI工具都已经整合在一起,统一叫做reporting and analysis,包含了以前的brio(现在叫interactive reporting),financial reporting,web analysis等工具,安装的时候会安装在Hyperion Home的BIPLUS目录下,也就是Hyperion以前称之为BI+的工具包(现在全部合并到Oracle的BIEE里统一叫BIEE PLUS),BI+的总体结构如下图:
hyperion2-1.jpg 主要分为web client端,Web服务器端和service端也是多层次的结构,不要以为我这里说的都是理论上的东西,其实安装的时候各个层次连安装介质都是分开 的,撇开web client端不说(因为有了web服务器的内容,就自然能够产生web客户端的界面),Web服务器上要安装reporting and analysis的UI层(是单独的安装介质),然后还需要用另一个介质安装reporting and analysis的service层(也就是上图的foundation service);最后不能不提的是,你还需要安装一个客户端的开发环境(就是图上左下角的studio),用studio开发的东西(比如bqy文 件),就能够部署在整个BI+运行环境里供用户访问。

前面说了BI+是包含了报表和分析等多个产品的一个BI包,这些产品都可以通过workspace来统一进行访问,这个就是原来Hyperion集成多个工具的一种方式,可能Oracle以后也会这么做吧

Hyperion essbase入门(二)什么是essbase
2009-02-19 00:16

转自:http://iniu.net/iwork/2008/01/hyperion-essbase.html

Essbase是什么?
Essbase的名字其实是Extended SpreadSheet dataBase

(大意是你可以把essabase想像成多张叠起来的excel表格,不仅仅在单张excel上可以进行表格之间的各种运算,在多张excel表格之间也可以做各种累计运算!)
这个大概是为什么essbase能够和 excel工具深度集成的原因,因为essbase很多设计都是来源于excel等工具对于分析的限制和不足。但是excel不失为essbase的一个 非常友好的前端,对于非常习惯使用Excel工具的业务人员,他们可以非常容易地使用和分析essbase里的数据,Oracle里关于Essbase卖 点的一个经常使用的场景是:当业务人员把数据放在多种表格的时候,到了最后他都不知道哪张表格的数据是最新的,而如果把所有的数据都放在essbase里 的时候,你可以轻易地得到最新的数据并且分析数据和数据之间的关系。
和传统的oltp类型的数据库不一样,oltp用实体和关系来描述对象,而多维数据库,则使用度量和维 度来描述对象。在做多维设计的时候,其实就是考虑关于度量和维度的设计,比如销售额就是一个典型的度量,而销售地区就是一个典型的维度,但是在 essbase里,度量也是一种特殊的维度,叫account维度,这个是和有些OLAP服务器概念上有所区别的,这样的定义方式能够很方便地使用维度的 操作方式访问度量,而且应该说在MDX这种标准多维查询语言里,度量和维度的确没有本质的区分。

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。

(其实essbase提供了非常丰富的api接口,也可以使用api来创建和修改outline)
在outline里定义维度和层次和累计方式,然后就是通过admin console编辑数据加载规则来把外部数据按照设计好的outline加载到essbase数据库里。
加载规则基本上有三种方式:
  1. 一是通过文本文件加载。
  2. 二是通过Open sql的方式从ODBC数据源加载。
  3. 最后一种是使用ETL工具进行加载。
然后使用计算脚本计算生成立方体里的其他所需要的数据,就可以通过excel或者BI工具来访问和分析多维数据库里的数据了。


Hyperion essbase入门(三)essbase的维度
2009-02-19 00:17

转自:http://iniu.net/iwork/2008/01/hyperion-essbaseessbase.html

其实对于一般OLAP产品而言,只有度量维度和普通维度两种,普通维度里可能时间维度有一些预定义的行 为,基本上这些维度的定义都是一些技术上的定义,不会具有业务上的含义(比如你不能建立一个具有财务费用属性的维度,这个所谓费用的行为需要你自己通过某 种技术手段去实现),但是Essbase在这方面则有不少特点,一方面你也可以从头开始建立自己所需要的维度,但是另一方面

Essbase已经根据大部分多维模型项目的需要,归纳出一些在大部分项目都需要的特殊维度和属性,提供了预定义的这些 维度和属性的行为,这是essbase的一个很大的特点,只要根据不同的需求去选择不同的维度类型和维度属性,就能够自动产生许多针对该维度类型相关的分 析。
这个特点也是熟悉其他OLAP产品的人学习Essbase的一个主要疑惑,就是为什么Essbase的教材总要花很多时间去交代各种各样的维度类型和属性。

这些预定义的维度和属性比如:account维度类型(度量)和属性,时间维度和属性,场景维度(scenario)和属性,这些维度在大部分的项目都会用到,并且都是计算密集和分布密集的维度。
Account维度和属性
Essbase里的第一种特殊的维度也是最复杂的维度是account dimension,account dimension其实是对应了多维模型里的度量,所以属性是和其他维度相差最大的维度类型,它有非常丰富的各种属性和各种各样可定义的行为。
Account dimension主要用于描述销售额,利润,利润率等企业的关键指标,所以多维数据库的设计里需要花许多时间做account dimension的设计。下面是account维度的一些属性的描述:

  • 时间余额属性(Time Balance)
虽然在OLAP运算中大部分用到的是根据不同的层次进行累加,比如一个季度的销售额是三个月销售额的总和,但是对于某些业务概念的表达则不能简单的进行相加。
比如存货数量,当一月存货是100,二月存货是200,3月存货是80的时候,则第一季度的存 货是多少呢?很显然并非是这三个月的总和380,而是根据预先的设定是取期初余额,还是取期末余额来还是取平均值来决定,如果是使用期初规则,则这个季度 的存货数量是100,如果是期末规则,则存货数量是80,类似于这种的属性则称之为account维度的时间余额(time balance)属性

  • 费用属性(Expense):Account Dimension成员里的第二种特殊属性是Expense属性和差异计算:一个成员可以标记为费用属性从而会自动具有财务上费用属性的特征,所谓具备财 务费用上的特征的意思是,对于一个不具备费用属性的数值而言,如销售额,如果销售额从100变为200的时候,这个时候应该是好事,也就是数值上的反应应 该正数,以红色来表示(如果红色代表好的话);但是对于费用的数值则相反,因为费用从100变为200的时候,实际上对于公司而言并非是什么好的事情,如 果采取和一般数值相同的算法(即200-100=一个正数的100的话),则看起来好像也是好事,而这和实际业务是有冲突的,所以所有费用属性的数值会采 取相反的方式(100-200=负的100),这样就能够很直观地看出来费用实际上是有问题的;当然如果使用别的OLAP来定义出费用属性,你可能就需要 定义一个计算列,这个计算列,这个计算列前面加一个负号来表示费用属性,我们通过这个属性不难看到,essbase在长期的积累中已经出现了大量的现成的 可以使用的属性行为,而这些属性行为都是可以让业务人员很容易理解的。这个费用属性的具体表现还体现在差异计算中,在差异计算比较实际发生和预算数的时 候,当一个维度不是费用属性的时候,如销售额,假设实际是100,而预算数是120,则差异计算 variance=@VAR(actual,budget)计算出来是-20;而另一个维度如果标记成费用维度,则相同的公式给出的数值是20。
时间维度和属性
时间维度是essbase里另外一个非常重要的维度,一个OLTP和OLAP的主要区别就可以通过时间维度来说明:

在交易系统里我们关注的时间特性是交易发生的时间,如果有两个交易分别发生在是15点10分和15点20分,这对于交易 系统而言是有本质的区别的,但是对于一个以一个小时为最小单位的OLAP的设计来说,这个两个交易是没有区别的,他们同样是发生在15点到16点的这个区 间里,所以交易系统关心时间上的点,而OLAP系统则关心时间的区间。

这个也提出了设计时间维度的一个基本问题就是时间维度的设计的最小的时间粒度应该是什么的问题,是一个小时,一天,还是15分钟,其实这些都取决于应用的具体需要。

比如一个分析一天内超市销售行为的分析系统一个合理的最小单位是半个小时或甚至15分钟,这样的时间区间可以分析出中午 吃饭的时间是不是对于销售额有明显的影响,但是这样的区间对于分析一年销售量随着时间的变化的曲线则没有任何意义,在这样的场景则最小单位取1天甚至1周 更加合适。

时间维度的另一个重要设计是关于年度的概念,可能是因为essbase起源于财务领域有关系,而任何真实公司财务系统都是按照年的概念(财政年度)来分开交易的。

(发生在12月31日--还是今年和1月1日—已经是明年的交易对于财务系统而言有本质的区别,虽然其实他们从某种观点来看不过就是今天和明天的区别)
所以essbase里也需要对财务年度的选取有特殊的考虑,最传统的一个设计是在使用一个时间维度的同时,再增加使 用另一个维度来代表年度,这种设计方式就可以完全按照财务的理解来处理年份,Hyperion的财务应用就使用这种设计方式,如下图是按照财政年度来处理 年份的设计:
hyperion3-1.jpg这种设计的方式可以和财务年度做很好的对应,但是对于分析一些跨年的连续的时间行为(如疾病发生的数量不会和财政年度有什么联系)的时候就不适合了。
在这样的情景可能直接使用一个包含年和更细时间粒度的单一时间维度更合适一些,下图就是单一时间维度的典型设计方式:
hyperion3-2.jpg
PTD计算
对于一般的应用而言,PTD(Period-to-Date)等按时间累加到某一状态的需求是比较常见的(如Q-T-D季度当前值,如 果当前是二月份,则计算的时候会把数据求和更新到二月份,等到了三月份再用户再发出同样的请求,则数据就会自动累计计算到三月份),essbase里对于 这种类型的计算也有相应的设计考虑。

Essbase使用两种方式来满足这种设计需求,第一种是通过成员公式(member formula),的方法,如下图:

hyperion4-1.jpg 这种方法对于需要创建QTD的维度而言,创建一个outline里的结构来计算QTD,从上图很容易看出,实际上在该outline结构里已经把组成QTD的各个成员摆在相应的位置来得出QTD的值。

如QTD Jan下只有一月份的成员,而QTD Feb下则包含一月和二月份的值,这种方式从道理上很容易理解,一般使用这种方式的时候所引用的成员可以使用共享成员的方式引用原来存在的各个数据 (Jan,Feb一般都已经在时间维度上已经存在)。这样设计之后,当在一月份的时候,需要使用QTD Jan成员来得出QTD的值,而在二月份的时候,需要使用QTD Feb成员来得出当时QTD的值,而到了四月份,则QTD的值重新回到包含当季的的第一个月。
这样就可以创建出所需要的QTD或者YTD,这种方式比较繁琐,但是很容易理解,最大的好处是可以完全自己控制累加的方式(可以满足某些特殊的需求,比如如说不想把某个月包含在计算里面)。

第二种得出QTD的值的方式是使用Essbase内置的PTD的功能,这种方式是通过时间序列的定义的方式来实现,仅对于被定义为时间维度的维度类型起作用,通过右键选择“动态时间序列”,则出现以下的选择:


hyperion4-2.jpg 选择所需要计算的的PTD的类型和在第几代的后代上进行相应的PTD计算,则当使用excel来操作的时候,只需要填入Q-T-D,或者Y-T-D就可以 自动得到当前的根据时间更新的累计值,这种方式则是完全由essbase通过定义提供的PTD的功能,只需要做一些定义,就可以实现PTD的各种功能,提 供预定义的行为。

Scenario维度和属性
Essbase的另一种特殊维度是scenario维度:scenario维度的主要目的是为了比较不同的数据集的差异计算,比如为了比较 实际发生和预算值,则scenario就会有两个成员actual代表实际发生数据集,而budget则代表预算数据集,这样就可以使用各种方式去分析比 较他们的差异,使用同样的方式还可以进行所谓的what-if分析,比如可以有一个数据集时今年发生数,通过拷贝今年发生的数据集并且相对应的发生乘于一 个系数(比如明年销售额是今年的120%),就可以在这种假设下进行很多计算来模拟各种不同的场景,这些主要都是通过scenario维度来实现的。





Hyperion essbase入门(四)计算
2009-02-19 00:18

转自:http://iniu.net/iwork/2008/01/hyperion-essbase-1.html

MOLAP的设计强于关系数据库或者ROLAP的地方就是MOLAP的设计可以按照预先指定的方式把结果欲先汇集计算出来(或者提供了很容易的实时汇总的方法)从而提高了分析的时候所需要的快速的响应速度!

如果大家熟悉Oracle的物化视图,就能够很容易理解为什么这种方式能够提供快速计算的能力。因为所有维度都是按照层次关系组织起来的:
比如对于区域维度而言,很显然全国的销售额一定是各个省的销售额的总和,而各个省的销售额一定是下面各地市销售额的总和,这种天 然的汇总关系为实现这种按层次的汇总提供可能性,因为我们通过MOLAP可以很容易计算出各个层次的累计数值,这样做查询的时候就能够很快地把所需要的数 值拿出来(不管你要的是哪一级的汇总)

从这种角度来说,使用Oracle关系数据库来模拟多维数据库是可能的,只要你建立足够多的物化视图,在每一个层次都提供汇总计算,当然这个是理论 上的,真正这么去实现在很多应用里根本就不现实,事实上,我一直在想,物化视图的技术是不是就是受MOLAP数据库的启发产生出来的呢?

理解Essbase计算

多维数据库里的数据有些是从源数据导入的,有些则是运算出来的,比如对于一个最小时间单位为天的分析销售量的立方体,每天的销售量都是从源系统导入 到Essbase里的,但是对于每个月的销售量,则是由Essbase根据更加细粒度的数据计算出来的,所以立方体里的数据在这种区别下可以分为两大类数 据,一类是从源系统导入的,另一类则是Essbase运算出来的,一般而言输入数据都是level 0数据(最低端的叶子)。

由Essbase根据导入的数据再计算生成我们所需要的别的数据的过程称之为calculation,Calculation也分为两种:
第一种方式是按照outline层次预先设定的方式进行叠加(Consolidation operator)。
第二种方式是使用自己写的计算公式进行计算(member formula)。

我们通过以下的例子来说明第一种的计算方式,在outline的设计的时候,一个必须指定的属性就是所谓的指定层次间的汇总关系(Consolidation operator),缺省的汇总关系总是相加,如下图:

hyperion3-3.jpg计算按照成员出现的次序进行,上图的设计含义是Qtr1成员的值是前三个月的总和(注意成员后面括号里的+号)即:

Qtr1=Jan+Feb+Mar

请注意+号不是唯一能够使用的符号,还可以有-(减),*(乘),/(除),%(百分比)等,比较特殊的是~(排除,意即该成员不参与到运算里), 这种计算的设计里最重要的是同一层次的成员出现的顺序,因为同一层次的计算顺序是按照出现的顺序来进行,而不是按照通常的运算符号本来的优先次序。
这种基于consolidation操作符进行运算的关系也是推荐的运算方式,因为这种方式可以提供更好的性能,而且对于使用者而言更加直观和容易理解。

Outline里另一种计算是使用成员公式(member formula)来进行,有时候当成员并不是按所想要的次序出现的时候,就需要使用公式去表现成员的关系去计算一个所需要的值,使用这种自定义的计算公式 能够描述更加复杂的计算关系,essbase提供了逻辑测试关系符(if else),各种统计和财务函数来方便计算。

维度计算的优先次序是先计算account维度的值,其次是时间维度的值,然后是计算其他稠密维度上的值,最后再计算稀疏维度上的值。而计算two pass的值则是在其他所有计算都完成之后。


Hyperion Essbase入门(五)SmartView
2009-02-19 00:20

转自:http://iniu.net/iwork/2008/01/hyperion-essbase-2.html

当Essbase里已经有了各种各样的数据的时候,如何使用essbase里的数据呢?使用essbase里的数据有多种方式,既可以通过 Hyperion BI+里的工具产品如IR,PR,FR,WA等来展现和分析essbase里的数据,也可以通过excel等office工具来展现和分析essbase 里的数据,当然,因为Essbase是业界一个很通用的产品,也可以使用很多第三方的软件如BO等来使用Essbase的数据,另一种更加困难但是却更为 灵活的方式是使用api调用的方式去操作Essbase里的数据,这是最困难也是最灵活的操作方式(所谓方便和灵活不能兼得吧!)。

通过Excel来操作essbase的数据又有两种方式,一种是安装essbase spreadsheet plugin客户端(传统的excel客户端),仅适用于Excel工具,另一个方式就是安装Smart View for Office产品,SmartView不仅仅可以用于Excel,还可以嵌在其他MSoffice如powerpoint里使用。

需要说明的是,Smart View不仅可以用于分析essbase里的数据,同时还可以作为一个统一的客户端操作Hyperion的其他应用产品如planning里面的数据。

Smart View architecture
Smart View并非是传统意义上的Excel spreadsheet Plugin的简单升级,因为它完全采用了经典的三层结构(spreadsheet plugin是一个两层结构),如下图(点击查看大图):

hyperion7-1.jpg

Smart View的发展是Hyperion战略的一个重要部分,客户端虽然是嵌在office产品里的小应用,但是该应用完全使用典型的三层架构通讯协议 HTTP(HTTPS)和应用层交互,应用层已经不是一般意义上的应用服务器的概念,而更多的是指运行在中间层的真正的“应用”的概念(比如 Hyperion Planning应用或者Analytic Service),每一个应用通过一个provider的转换和客户端进行各种交互,从这种思路可以看出来,当将来Hyperion发布更多的行业应用产 品的时候,就可以通过相应的增加provider来使Smart View能够以一种一致的方式使用新的应用。所以在Hyperion System9里,Smart View的目标是能够为所有Hyperion产品提供MSOffice集成操作的统一界面。

举例来说,Smart View客户端和分析服务的交互是Excel把分析命令发给provider,然后provider再把请求转交给分析服务,分析服务完成命令后把结果返 回provider,再由provider把结果返回给Smart View,Smart View再通过Excel把结果展示出来。

SmartView 基础概念
因为Smart View是使用office工具(主要是Excel)来展现多维数据,所以首先需要熟悉的是如何在Excel里来表现多维数据。

什么是POV?
因为Excel只有行和列,所以Excel能够表现的维度最多是两维的,为了表现Essbase里多维的概念,必须想像对于立方体进行 一个切片,一个切片就可以直接平铺在一个Excel里形成一张电子表格,这个就是使用Excel来表现多维的方法,切片的动作是使用POV(Point of View)来进行的,所谓在一个维度上切片,就是在一个维度的一个层次上选定一个特定的值,比如对于区域维度,我们可以选定华东区,或者选定上海市,这样 就是对区域维度做了一个切片动作。
Smart View的数据在跨整个MS Office的产品都是动态的,比如用Excel里的Smart View剪裁出来的数据片,可以使用Hyperion-》copy data在所有Office产品之间进行拷贝,被拷贝后的数据维持和原来同样的Essbase连接,而且可以动态刷新,

Excel操作
感觉Smart View一个超级好玩的功能就是,你可以随便在excel表格里写维度的名称,如下图:

hyperion7-2.jpg

我是随便在excel的行和列上写Product和Year,然后双击表格(就是代表retrieve data的意思),则数据就出来了,如下图:

hyperion7-3.jpgExcel 的处理是Smart View会把excel表格填入的东西和多维数据库里的维度进行对比,如果找到匹配,就会把相应的数据按照我们所填入的方式展现出来。请注意如果维度的成 员名称是数值,则需要用单引号括起来。对于通常的多维操作的旋转功能只需要按着右键把维度拖动到相应的位置就可以了,还是比较直观的。


Hyperion Essbase入门(六)存储
2009-02-19 00:21

转自:http://iniu.net/iwork/2008/01/hyperion-essbase-3.html

要更好地理解Essbase的计算过程,就需要理解Essbase的存储结构,记得以前学习Oracle数据库里内置的OLAP的时候,教材只是交 代了OLAP是以BLOB的形式存储在数据库字段里的,当时对于BLOB里的实际存储结构并没有特别多的说明,但是学Essbase的时 候,Essbase里的确交代了Essbase数据库里存储原理的更加详细的信息,从而也就容易明白为什么稠密维度和稀疏维度对于Essbase数据库性 能和大小至关重要的影响。

立方体里的“立方体”
和通常的关系数据库一样,Essbase使用两种基本的数据结构来存储数据,一种是数据块,另一种是索引,当用户请求一个数据的时 候,Essbase一般而言先通过索引找到包含该数据的数据块,然后把该数据块复制到内存中,来完成数据的处理过程。可是什么是Essbase的数据块, 什么是Essbase的索引呢?Essbase的数据块和索引和普通关系数据库的概念有比较大的区别。这是因为Essbase数据块和索引来源于多维数据 库的“稠密”和“稀疏”的概念。

Essbase的最小的一个IO操作单位是数据块,而数据块在Essbase里的定义则是由所有的稠密维度组成的“小立方体”组成,一个形象化的表 示数据块的例子是当稠密维度只有两个的时候(例子中的稠密维度只有两个,销售数量和时间),则这个“小立方体”则退化为一个Excel表格,如下图:
hyperion8-1.jpg

这个完完全全就是一个数据块在现实中表现出来的样子,也就是一个有两个稠密维度的数据块的真实样子。

一般而言,我们在Smart View操作Essbase的数据的时候通常都是以稠密维度做为行和列来展现Essbase里的数据。数据块又由数据单元(data cell,也就是上图中每一个Excel单元格)组成,每个数据单元包含8个字节的硬盘数据,数据单元里真正存储着维度交叉后的数据值(稠密维度空间的 值)。
不管是否存在数据,任何一个稠密维度空间里的数据单元都是存在的,所以可以想像,当我们在设计不恰当的时候把一个稀疏维度当成稠密维度来设计,就会在这个稠密“小立方体”里留下很多空着的但是仍然占着8个字节存储的空单元格。

那么稀疏维度的作用是什么呢? Essbase使用所有存在至少一个实际组合的稀疏维度来形成Essbase里所说的索引文件指向由稠密维度组成的“小立方体”,稀疏维度不存在的组合并 不会在索引里存在记录,因而也不会因为大量不存在的值而浪费大量的空间(比如上面的例子假设我们还有两个稀疏维度,一个是客户,一个是产品),则这个由两 个稠密维度和两个稀疏维度组成的多维数据库可以想像成在由稀疏维度组成的二维坐标空间了,稀疏地放着由稠密维度组成的小立方体。如下图:

hyperion8-2.jpg

当Essbase寻找一个数据的时候,先是从由稀疏维度组成的索引里去寻找一个数据块(“小立方体”),然后把这个小立方体拷贝到内存里,最后才真正处理这个“小立方体”里的真正存储着数据的Essbase的数据块。

从这个描述可以看出,Essbase里的数据块和索引的概念和关系数据库很不一样,稠密维度对于Essbase的数据存储至关重要,因为所有具有稠 密属性的维度所形成的一个小立方体就是我们所说的Essbase的数据块,所以一旦一个Essbase的outline设计完成了,也就意味着该数据库的 数据块决定了,数据块的大小是所有稠密属性成员数的乘积。

为什么会这么设计呢,因为Essbase总是希望能够在一次内存处理里尽量处理更多的数据,如果数据块里有很多空的单元(稀疏维度必然导致空单 元),则会大大降低处理效率,但是如果把所有稠密的单元组成的所谓“小立方体“放到内存里,自然而然就可以在一次处理里处理许多数据,这个也是我们设计维 度需要考虑的一个问题,定义一个维度是稠密还是稀疏并不是一件无关紧要的事情,而是会真正对性能有很大关系的决定。如果把一个稀疏维度定义为稠密维度,比 如会造成每一个数据块有非常多的空值,而浪费大量的空间,并且降低数据处理的性能。