Cube模型刷新調(diào)研方案_第1頁
Cube模型刷新調(diào)研方案_第2頁
Cube模型刷新調(diào)研方案_第3頁
Cube模型刷新調(diào)研方案_第4頁
Cube模型刷新調(diào)研方案_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Cube模型刷新調(diào)研方案 1. Cube模型刷新1.1 全量更新和增量更新1.1.1 全量更新Tip 1: 當(dāng)刷新立方體時(shí)間不是很長,要刷新的立方體的數(shù)量不是很多的時(shí)候,這時(shí)我們就可以考慮用Cube模型的全量更新。Tip 2:目前IFAR項(xiàng)目組用的全部是全量更新,據(jù)他們的經(jīng)驗(yàn)所得,大概一個(gè)刷出來的Cube模型700M需要1小時(shí)20分鐘左右.1.1.2 增量更新當(dāng)刷新立方體時(shí)間過長的時(shí)候,增量更新是縮短刷新時(shí)間的好辦法。增量更新的時(shí)候,只會(huì)對立方體加載新增加的數(shù)據(jù),以前的數(shù)據(jù)不會(huì)進(jìn)行更改,這樣會(huì)縮短讀取數(shù)據(jù)的時(shí)間;另外在刷新立方體的時(shí)候,也會(huì)縮短刷新時(shí)間。目前,增量更新的方式有兩種:普通增量更新

2、(立方體屬性/processing/The Cube is incrementally updated)(適用目前市場上的所有版本)Tip 1: 在立方體的結(jié)構(gòu)(包括指標(biāo),維度,層次等)發(fā)生變化,必須重新全部加載數(shù)據(jù)Tip 2: 推薦您定期重建立方體。第一次建立立方體時(shí),自動(dòng)分區(qū)( Auto-Partitioning)功能可以將維度和層分割為多個(gè)分區(qū)層(partitioning level)。 在此之后所有新的類別將被加到 “0”分區(qū)層上。 如果隨時(shí)間的變化增加了很多類別,PowerCube用戶最終會(huì)遇到性能問題。通常建議7次增量更新之后,需要重新全量加載一次立方體按時(shí)間分區(qū)更新(新增立方體/

3、Cube Group/Enable Time-based Partitioning)(7.0以后版本支持)按時(shí)間分區(qū)更新技術(shù)是基于普通增量更新之上的,使用按時(shí)間分區(qū)會(huì)生成一個(gè)虛擬立方體(該立方體并不保存數(shù)據(jù),只保存維度信息),一個(gè)定義文件,還有包含數(shù)據(jù)的若干子立方體。舉例說明:有一年的數(shù)據(jù),按月分區(qū),這樣每個(gè)月就會(huì)有一個(gè)立方體,總共是12個(gè)。Tip 1: 立方體增量更新之后,請保存模型,這樣可以保證Category的完整性。如果Category不完整,可能會(huì)存在子立方體的Category在虛擬立方體中找不到的情況,這樣立方體的刷新是無法繼續(xù)的。Tip 2: 子立方體默認(rèn)都是增量更新的,所以和普

4、通增量更新一樣,如果某個(gè)子立方體有了多次刷新之后,也必須進(jìn)行一次全量更新。比如:按月分區(qū)但是每天都刷新數(shù)據(jù),當(dāng)月的立方體必然會(huì)進(jìn)行多次更新,這時(shí)候就必須刪掉當(dāng)月的立方體,重新刷新一下。Tip 3: 通常建議按月分區(qū),按日分區(qū)的話,一年的子立方體太多,打開虛擬立方體的時(shí)候速度會(huì)比較慢,如果按季度、年分區(qū)的話,可能會(huì)有Tip 2中的問題。1.1.3 根據(jù)業(yè)務(wù)分析考慮Cube模型的大小來決定是用全量更新和增量更新Tip 1:考慮方案1:所有數(shù)據(jù)都按一個(gè)Cube模型來存放,好處是:可以滿足跨年,整體進(jìn)行數(shù)據(jù)分析和比較。壞處是:由于數(shù)據(jù)量比較大,查詢速度就會(huì)相應(yīng)的變慢,這時(shí)就不能用全量更新了,只能用增量

5、更新了。綜合以上分析可得,此方案只適合用增量更新,用全量更新的話,會(huì)耗很長時(shí)間,而用增量更新的話,又面臨著對數(shù)據(jù)非常嚴(yán)格的要求。Tip 2:考慮方案2:按年月,來劃分,到底分多少個(gè)Cube模型,比如按年分,一年一個(gè)cube模型,這樣的話,我們更新的時(shí)候,只更新某一年的,這樣可以全量更新,速度也相對來說,比較快,不足的地方,數(shù)據(jù)分析的時(shí)候,不能cube模型數(shù)據(jù)之間的夸年進(jìn)行比較,如果需要有比較的業(yè)務(wù)時(shí),也只能事先通過計(jì)算得到。注:在Uinx下單個(gè)文件的存儲(chǔ)大小,不能超過4G。1.1.4 全量更新與增量更新執(zhí)行角本和格式區(qū)別現(xiàn)在要實(shí)現(xiàn)增量刷新就要用增量的腳本來執(zhí)行而不能與全量刷新角本混為一談。MD

6、L是只能進(jìn)行全量刷新的,增量刷新只能用PYI,且IQD所引用的表要是增量表,即表中的數(shù)據(jù)只能包括當(dāng)前要新增到Cube中的數(shù)據(jù),否則會(huì)進(jìn)行累加。在進(jìn)行增量時(shí),一般的做法是:首先將MDL轉(zhuǎn)為PYI,同時(shí)進(jìn)行一次全量刷新;以后的增量刷新對PYI執(zhí)行就可以了。還有一個(gè)問題就是,如果真的要采用增量刷新的話,就要準(zhǔn)備兩套表(一全數(shù)據(jù)表,一增量表即臨時(shí)表),兩套立方體模型(因?yàn)槎攘縄DQ所取的表不同,分別對應(yīng)兩套不同的表)。這對于剛剛開發(fā)完的項(xiàng)目存在一定的挑戰(zhàn)性。注:刷CUBE之前需要KILL一進(jìn)程殺進(jìn)程命令:taskkill /f /im ppesbusserver1.2 Uinx下的shell角本和多線

7、程調(diào)用Tip 1: 在Uinx下刷新Cube模型的時(shí)候,需要在Uinx下編寫shell角本,通過執(zhí)行shell角本來進(jìn)行有目的的刷新Cube模型。IFAR項(xiàng)目組:所用的shell角本如下:注:上面shell角本,能對Cube模型進(jìn)行刷新,同時(shí)也能對數(shù)據(jù)進(jìn)行刷新。Tip 2:在Uinx下可以開啟多線程,對多個(gè)shell角本,同時(shí)進(jìn)行執(zhí)行。注:技術(shù)難點(diǎn)是Uinx不太熟悉,不知道怎樣去開啟進(jìn)程和線程去執(zhí)行shell角本,怎樣判斷是否執(zhí)行完成,如果報(bào)錯(cuò)了,怎樣去處理,怎樣用日志記錄。1.3 Java程序調(diào)用shell角本基本流程圖1.3.1 通過編寫一段java代碼,進(jìn)行有規(guī)律的去調(diào)用shell角本,

8、來刷新Cube模型。JAVA 調(diào)用 shell 腳本 并生成證書shell 腳本 如下其中 Dir 是存入的路徑  User 是一個(gè)文件名稱 config 是一個(gè)配置文件 #!/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    

9、mkdir $Dir fi openssl genrsa -out $KeyFile 1024 openssl req -new -config $CONFIG -key $KeyFile -out $CSRFile -in $CMTFile 以下是調(diào)用該腳本的程序 public class New_User_Cert   public static boolean user_cert_create(HttpServletRequest request, String filename) throws IOException if (log.isDebugEnabled() log.

10、debug("Entering 'user_cert_create  '  function"); String path= request.getRealPath("/");  /取得項(xiàng)目的路徑 String cmd = new String5; cmd0 = "sh" cmd1 = "."+path+"openssl/new_user_cert.sh"  /在項(xiàng)目中存在此文件 openssl/new_user_cert.sh cmd2

11、= filename; /給文件取名 cmd3 = path+"openssl/user/config/"+filename+".config"  /配置文件中的信息 cmd4 = path+"openssl/user"  /生成新文件存在此目錄中 StringBuffer buf=new StringBuffer(); for(int i=0;i<cmd.length;i+) buf.append(cmdi+" "); request.setAttribute("new&quo

12、t;,buf.toString(); try Runtime run = Runtime.getRuntime(); Process p = run.exec(cmd); BufferedInputStream in = new BufferedInputStream(p.getInputStream(); BufferedInputStream err = new BufferedInputStream(p.getErrorStream(); BufferedReader inBr = new BufferedReader(new InputStreamReader(in); Buffere

13、dReader 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(lineStr); try if (p.waitFor() != 0) if (p.exitValue() = 1) return false;  /老是在這兒出現(xiàn)非

14、法退出 return true; catch (InterruptedException e) e.printStackTrace(); return false; catch (Exception e) e.printStackTrace(); return false; return true; 感覺好像路徑出錯(cuò)的.可是又不知道怎么調(diào).搞的老半天的 環(huán)境是在 solaris 小型服務(wù)器下 appfuse 開發(fā) tomcat 作為容器Runtime.getRuntime.exec("/opt/usr/./aaa.sh").waitFor()用絕對路徑另外,waitFor是

15、在有多個(gè)shell命令要運(yùn)行,并且可能會(huì)互相影響時(shí)要保證命令執(zhí)行順序的方法,例如先用shell寫一個(gè)文件,然后用shell刪除這個(gè)文件,這個(gè)時(shí)候就要加上waitFor1.3.2 刷新Cube模型時(shí)的日志記錄服務(wù)器日志文件包括有關(guān)IBM Cognos 組件運(yùn)行時(shí)發(fā)生的事件的信息。可以使用cogserver.log文件跟蹤活動(dòng)和排除故障問題。默認(rèn)情況下,IBM Cognos 日志服務(wù)器被配置為將所有日志消息均發(fā)送到位于c8_location/logs目錄中的cogserver.log 文件。要針對IBM Cognos Configuration 中的錯(cuò)誤消息進(jìn)行故障排除,可以創(chuàng)建一個(gè)活動(dòng)日志。1.

16、4 Transformer生成的模型存儲(chǔ)格式.mdl和.pyj他們的區(qū)別是什么?1)pyi是二進(jìn)制的,mdl是ASCII碼的,這是為了移植。比如說我在nt平臺下做得模型,要移植到unix上,pyi無法移植,mdl可以。 2)利用mdl格式可以把以前版本的文件用現(xiàn)在的版本打開,而新版本則不可以打開pyi格式的老文件. 3)模型比較大的時(shí)候,PYI訪問速度快,特別在編寫Transformer宏的時(shí)候,比較明顯PYI可以保留數(shù)據(jù)庫用戶名和密碼,所以通常建議,在項(xiàng)目中使用PYI而不是MDL,并且定期將PYI保存為MDL以防止PYI文件失效。 4)pyi格式是二進(jìn)制,性能要大大的優(yōu)于mdl,個(gè)人感覺十倍

17、的速度都不止,耗費(fèi)cpu和網(wǎng)絡(luò)的資源比較少。而且,移植以后不受cognons的影響,可以正常打開,而且在服務(wù)器上生成cube的速度也要比mdl 的速度高一些。 5)mdl是ASCII碼的文件,可以用文本打開,進(jìn)行手工的修改,或者編輯程序?qū)dl進(jìn)行批量處理,對于理解模型十分有用。綜述:pyi和mdl模型各有千秋,合理互補(bǔ)使用會(huì)給工作帶來效益。推薦同時(shí)保存兩種模型,并使之同步。注:根據(jù)農(nóng)行IFAR項(xiàng)目組的經(jīng)驗(yàn),他們?nèi)坑玫氖莔dl格式,我們也可以考慮借用一下。2. 參數(shù)設(shè)置文件可以使用幾種參數(shù)設(shè)置,以下是最常用的參數(shù)設(shè)置: · ModelWorkDirectory=<path&g

18、t;當(dāng)進(jìn)行模型設(shè)計(jì)時(shí)設(shè)定創(chuàng)建臨時(shí)文件的位置。臨時(shí)文件用來在立方體創(chuàng)建過程中發(fā)生嚴(yán)重錯(cuò)誤時(shí)恢復(fù)在戰(zhàn)略檢查點(diǎn)被掛起的模型。該文件的擴(kuò)展名為QYI, 默認(rèn)的路徑是ModelSaveDirectory設(shè)置的值。· DataWorkDirectory=<path1;path2;.>設(shè)定在生成立方體時(shí)Transformer創(chuàng)建臨時(shí)工作文件的位置??梢允褂枚鄠€(gè)驅(qū)動(dòng)器的能力可以消除操作系統(tǒng)所造成的大小限制。 當(dāng)Transformer 創(chuàng)建立方體時(shí),它可以將臨時(shí)文件寫入指定的驅(qū)動(dòng)器或目錄。這些文件被連接到一個(gè)邏輯文件,而無需考慮它們所在的驅(qū)動(dòng)器。這些文件的位置由您所設(shè)定的路徑列表來決定。默

19、認(rèn)的路徑為CubeSaveDirectory設(shè)置的值。· DataSourceDirectory=<path>對于除IQD文件和Architect模型以外的數(shù)據(jù)源文件,該設(shè)置可以指定Transformer搜索這些文件的位置。默認(rèn)路徑是當(dāng)前工作路徑。· CubeSaveDirectory=<path>指定Transformer保存立方體的位置。默認(rèn)路徑為ModelSaveDirectory。· ModelSaveDirectory=<path>設(shè)定Transformer保存模型的位置。默認(rèn)路徑為當(dāng)前工作路徑。下面是Transfor

20、mer日志文件中有關(guān)這些設(shè)置的實(shí)例:PowerPlay Transformer Wed Sep 19 09:39:17 2001LogFileDirectory=c:transformerlogsModelSaveDirectory=c:transformermodelsDataSourceDirectory=c:transformerdataCubeSaveDirectory=e:transformercubesDataWorkDirectory=d:tempModelWorkDirectory=e:temp下面的例子顯示了如何在命令行中使用參數(shù)設(shè)置文件: trnsfrmr -n -fc:p

21、references.prf model.mdl2.1 提示· 在命令行設(shè)定參數(shù)設(shè)置文件的使用會(huì)覆蓋并優(yōu)先于其它設(shè)置。 例如,如果在rsserver.sh文件中定義了環(huán)境設(shè)置,在命令行中使用參數(shù)設(shè)置文件將覆蓋這些設(shè)置。· TMPDIR、 TEMP、TMP等環(huán)境變量可以定義Transformer在什么位置創(chuàng)建臨時(shí)文件。Transformer可以使用所定義的第一個(gè)環(huán)境變量。這些環(huán)境變量是操作系統(tǒng)定義的系統(tǒng)環(huán)境變量。3. 刷新Cube模型前提條件3.1 Unix下的環(huán)境變量配置 配置好Unix下的環(huán)境變量(配置的文件名字profile)具體配制如下:3.2 在建立好Cube模型立方體的時(shí)候,要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論