Cube模型刷新调研方案_第1页
Cube模型刷新调研方案_第2页
Cube模型刷新调研方案_第3页
Cube模型刷新调研方案_第4页
Cube模型刷新调研方案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Cube模型刷新调研方案 1. Cube模型刷新1.1 全量更新和增量更新1.1.1 全量更新Tip 1: 当刷新立方体时间不是很长,要刷新的立方体的数量不是很多的时候,这时我们就可以考虑用Cube模型的全量更新。Tip 2:目前IFAR项目组用的全部是全量更新,据他们的经验所得,大概一个刷出来的Cube模型700M需要1小时20分钟左右.1.1.2 增量更新当刷新立方体时间过长的时候,增量更新是缩短刷新时间的好办法。增量更新的时候,只会对立方体加载新增加的数据,以前的数据不会进行更改,这样会缩短读取数据的时间;另外在刷新立方体的时候,也会缩短刷新时间。目前,增量更新的方式有两种:普通增量更新

2、(立方体属性/processing/The Cube is incrementally updated)(适用目前市场上的所有版本)Tip 1: 在立方体的结构(包括指标,维度,层次等)发生变化,必须重新全部加载数据Tip 2: 推荐您定期重建立方体。第一次建立立方体时,自动分区( Auto-Partitioning)功能可以将维度和层分割为多个分区层(partitioning level)。 在此之后所有新的类别将被加到 “0”分区层上。 如果随时间的变化增加了很多类别,PowerCube用户最终会遇到性能问题。通常建议7次增量更新之后,需要重新全量加载一次立方体按时间分区更新(新增立方体/

3、Cube Group/Enable Time-based Partitioning)(7.0以后版本支持)按时间分区更新技术是基于普通增量更新之上的,使用按时间分区会生成一个虚拟立方体(该立方体并不保存数据,只保存维度信息),一个定义文件,还有包含数据的若干子立方体。举例说明:有一年的数据,按月分区,这样每个月就会有一个立方体,总共是12个。Tip 1: 立方体增量更新之后,请保存模型,这样可以保证Category的完整性。如果Category不完整,可能会存在子立方体的Category在虚拟立方体中找不到的情况,这样立方体的刷新是无法继续的。Tip 2: 子立方体默认都是增量更新的,所以和普

4、通增量更新一样,如果某个子立方体有了多次刷新之后,也必须进行一次全量更新。比如:按月分区但是每天都刷新数据,当月的立方体必然会进行多次更新,这时候就必须删掉当月的立方体,重新刷新一下。Tip 3: 通常建议按月分区,按日分区的话,一年的子立方体太多,打开虚拟立方体的时候速度会比较慢,如果按季度、年分区的话,可能会有Tip 2中的问题。1.1.3 根据业务分析考虑Cube模型的大小来决定是用全量更新和增量更新Tip 1:考虑方案1:所有数据都按一个Cube模型来存放,好处是:可以满足跨年,整体进行数据分析和比较。坏处是:由于数据量比较大,查询速度就会相应的变慢,这时就不能用全量更新了,只能用增量

5、更新了。综合以上分析可得,此方案只适合用增量更新,用全量更新的话,会耗很长时间,而用增量更新的话,又面临着对数据非常严格的要求。Tip 2:考虑方案2:按年月,来划分,到底分多少个Cube模型,比如按年分,一年一个cube模型,这样的话,我们更新的时候,只更新某一年的,这样可以全量更新,速度也相对来说,比较快,不足的地方,数据分析的时候,不能cube模型数据之间的夸年进行比较,如果需要有比较的业务时,也只能事先通过计算得到。注:在Uinx下单个文件的存储大小,不能超过4G。1.1.4 全量更新与增量更新执行角本和格式区别现在要实现增量刷新就要用增量的脚本来执行而不能与全量刷新角本混为一谈。MD

6、L是只能进行全量刷新的,增量刷新只能用PYI,且IQD所引用的表要是增量表,即表中的数据只能包括当前要新增到Cube中的数据,否则会进行累加。在进行增量时,一般的做法是:首先将MDL转为PYI,同时进行一次全量刷新;以后的增量刷新对PYI执行就可以了。还有一个问题就是,如果真的要采用增量刷新的话,就要准备两套表(一全数据表,一增量表即临时表),两套立方体模型(因为度量IDQ所取的表不同,分别对应两套不同的表)。这对于刚刚开发完的项目存在一定的挑战性。注:刷CUBE之前需要KILL一进程杀进程命令:taskkill /f /im ppesbusserver1.2 Uinx下的shell角本和多线

7、程调用Tip 1: 在Uinx下刷新Cube模型的时候,需要在Uinx下编写shell角本,通过执行shell角本来进行有目的的刷新Cube模型。IFAR项目组:所用的shell角本如下:注:上面shell角本,能对Cube模型进行刷新,同时也能对数据进行刷新。Tip 2:在Uinx下可以开启多线程,对多个shell角本,同时进行执行。注:技术难点是Uinx不太熟悉,不知道怎样去开启进程和线程去执行shell角本,怎样判断是否执行完成,如果报错了,怎样去处理,怎样用日志记录。1.3 Java程序调用shell角本基本流程图1.3.1 通过编写一段java代码,进行有规律的去调用shell角本,

8、来刷新Cube模型。JAVA 调用 shell 脚本 并生成证书shell 脚本 如下其中 Dir 是存入的路径 User 是一个文件名称 config 是一个配置文件 #!/bin/sh Dir=$3 User=$1 CONFIG=$2 KeyFile=$Dir/$User.key CSRFile=$Dir/$User.csr CRTFile=$Dir/$User.crt CMTFile=$Dir/$User.pem # make sure environment exists if ! -d $Dir ; then mkdir $Dir fi openssl genrsa -out $Ke

9、yFile 1024 openssl req -new -config $CONFIG -key $KeyFile -out $CSRFile -in $CMTFile 以下是调用该脚本的程序 public class New_User_Cert public static boolean user_cert_create(HttpServletRequest request, String filename) throws IOException if (log.isDebugEnabled() log.debug(Entering user_cert_create function); S

10、tring path= request.getRealPath(/); /取得项目的路径 String cmd = new String5; cmd0 = sh; cmd1 = .+path+openssl/new_user_cert.sh; /在项目中存在此文件 openssl/new_user_cert.sh cmd2 = filename; /给文件取名 cmd3 = path+openssl/user/config/+filename+.config; /配置文件中的信息 cmd4 = path+openssl/user; /生成新文件存在此目录中 StringBuffer buf=n

11、ew StringBuffer(); for(int i=0;icmd.length;i+) buf.append(cmdi+ ); request.setAttribute(new,buf.toString(); try Runtime run = Runtime.getRuntime(); Process p = run.exec(cmd); BufferedInputStream in = new BufferedInputStream(p.getInputStream(); BufferedInputStream err = new BufferedInputStream(p.getE

12、rrorStream(); BufferedReader inBr = new BufferedReader(new InputStreamReader(in); BufferedReader errBr = new BufferedReader(new InputStreamReader(err); String lineStr; while (lineStr = errBr.readLine() != null) System.out.println(lineStr); while (lineStr = inBr.readLine() != null) System.out.println

13、(lineStr); try if (p.waitFor() != 0) if (p.exitValue() = 1) return false; /老是在这儿出现非法退出 return true; catch (InterruptedException e) e.printStackTrace(); return false; catch (Exception e) e.printStackTrace(); return false; return true; 感觉好像路径出错的.可是又不知道怎么调.搞的老半天的 环境是在 solaris 小型服务器下 appfuse 开发 tomcat 作

14、为容器Runtime.getRuntime.exec(/opt/usr/./aaa.sh).waitFor()用绝对路径另外,waitFor是在有多个shell命令要运行,并且可能会互相影响时要保证命令执行顺序的方法,例如先用shell写一个文件,然后用shell删除这个文件,这个时候就要加上waitFor1.3.2 刷新Cube模型时的日志记录服务器日志文件包括有关IBM Cognos 组件运行时发生的事件的信息。可以使用cogserver.log文件跟踪活动和排除故障问题。默认情况下,IBM Cognos 日志服务器被配置为将所有日志消息均发送到位于c8_location/logs目录中的

15、cogserver.log 文件。要针对IBM Cognos Configuration 中的错误消息进行故障排除,可以创建一个活动日志。1.4 Transformer生成的模型存储格式.mdl和.pyj他们的区别是什么?1)pyi是二进制的,mdl是ASCII码的,这是为了移植。比如说我在nt平台下做得模型,要移植到unix上,pyi无法移植,mdl可以。 2)利用mdl格式可以把以前版本的文件用现在的版本打开,而新版本则不可以打开pyi格式的老文件. 3)模型比较大的时候,PYI访问速度快,特别在编写Transformer宏的时候,比较明显PYI可以保留数据库用户名和密码,所以通常建议,在

16、项目中使用PYI而不是MDL,并且定期将PYI保存为MDL以防止PYI文件失效。 4)pyi格式是二进制,性能要大大的优于mdl,个人感觉十倍的速度都不止,耗费cpu和网络的资源比较少。而且,移植以后不受cognons的影响,可以正常打开,而且在服务器上生成cube的速度也要比mdl 的速度高一些。 5)mdl是ASCII码的文件,可以用文本打开,进行手工的修改,或者编辑程序对mdl进行批量处理,对于理解模型十分有用。综述:pyi和mdl模型各有千秋,合理互补使用会给工作带来效益。推荐同时保存两种模型,并使之同步。注:根据农行IFAR项目组的经验,他们全部用的是mdl格式,我们也可以考虑借用一

17、下。2. 参数设置文件可以使用几种参数设置,以下是最常用的参数设置: ModelWorkDirectory=当进行模型设计时设定创建临时文件的位置。临时文件用来在立方体创建过程中发生严重错误时恢复在战略检查点被挂起的模型。该文件的扩展名为QYI, 默认的路径是ModelSaveDirectory设置的值。 DataWorkDirectory=设定在生成立方体时Transformer创建临时工作文件的位置。可以使用多个驱动器的能力可以消除操作系统所造成的大小限制。 当Transformer 创建立方体时,它可以将临时文件写入指定的驱动器或目录。这些文件被连接到一个逻辑文件,而无需考虑它们所在的驱

18、动器。这些文件的位置由您所设定的路径列表来决定。默认的路径为CubeSaveDirectory设置的值。 DataSourceDirectory=对于除IQD文件和Architect模型以外的数据源文件,该设置可以指定Transformer搜索这些文件的位置。默认路径是当前工作路径。 CubeSaveDirectory=指定Transformer保存立方体的位置。默认路径为ModelSaveDirectory。 ModelSaveDirectory=设定Transformer保存模型的位置。默认路径为当前工作路径。下面是Transformer日志文件中有关这些设置的实例:PowerPlay T

19、ransformer Wed Sep 19 09:39:17 2001LogFileDirectory=c:transformerlogsModelSaveDirectory=c:transformermodelsDataSourceDirectory=c:transformerdataCubeSaveDirectory=e:transformercubesDataWorkDirectory=d:tempModelWorkDirectory=e:temp下面的例子显示了如何在命令行中使用参数设置文件: trnsfrmr -n -fc:preferences.prf model.mdl2.1 提示 在命令行设定参数设置文件的使用会覆盖并优先于其它设置。 例如,如果在rsserver.sh文件中定义了环境设置,在命令行中使用参数设置文件将覆盖这些设置。 TMPDIR、 TEMP、TMP等环境变量可以定义Transformer在什么位置创建临时文件。Transformer可以使用所定义的第一个环境变量。这些环境变量是操作系统定义的系统环境变量。3. 刷新Cube模型前提条件3.1 Unix下的环境变量配置 配置好Unix下的环境变量(配置的文件名字profile)具体配制如下:3.2 在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论