對JPivot的jfreechart和drillthrough顯示做了增強(qiáng),終于可以拿出去給人用了。
先說說性能問題: 先是找了一臺閑置的IBM X445 PC Server,4×2GHZ CPU,8G內(nèi)存,2×146G硬盤,操作系統(tǒng) windows 2000 , 開啟AWE 3G參數(shù)。然后裝Oracle 10g,數(shù)據(jù)倉庫模式,使用了4G AWE內(nèi)存共約4.5GB內(nèi)存。再建成一張1600萬用戶數(shù)據(jù)寬表,寬表一律使用bitmap索引,還有其他20個左右維表。 然后就簡單了,寫mondrian Cube,配JPivot。 最后搞下來的結(jié)果是:基本上mondrian 每次做group by 操作最長不超過30秒,一般在20秒左右。用戶基本可以接受。問了使用NCR的朋友,說NCR使用自己的數(shù)據(jù)庫,也基本是這樣的一個性能。 PS:偷偷問一聲,在這基礎(chǔ)上,性能還能改進(jìn)否?
再說說方向問題: 我們現(xiàn)在使用2個OLAP,一個是jpivot + mondrian ,屬于ROLAP;另一個是BO intelligence + essbase,屬于MOLAP。目前的感覺是,由于DB性能強(qiáng)悍,導(dǎo)致ROLAP和MOLAP在性能上相差不大。同時(shí)ROLAP可以直接和報(bào)表系統(tǒng)共用同一張表。而MOLAP則需要使用工具來打CUBE做數(shù)據(jù)轉(zhuǎn)換,這樣在開發(fā)和維護(hù)工作量上,MOLAP比ROLAP大。 另外往往業(yè)務(wù)部門分析到最后,就是要看明細(xì)數(shù)據(jù)了,這個時(shí)候MOLAP的前端工具往往不能做好支持。而jpivot則無此問題。 綜上所述,我目前好像還沒看到必須用MOLAP的理由,聽說華為原來用M$ 的OLAP,后來好像支持不住了,就直接用回了BO 報(bào)表,呵呵。
JPivot的問題: 操作太復(fù)雜,必須對OLAP的概念有清晰的了解,普通用戶無法使用。與mondrian 集成不夠緊密。mondrian不提供數(shù)據(jù)鉆取功能,該功能是jpivot自己做的,所以會導(dǎo)致數(shù)據(jù)類型格式丟失。鉆取詳細(xì)數(shù)據(jù)量無限制,導(dǎo)致內(nèi)存溢出。界面比較難看,操作方式非主流使用jpivot自己的mvc框架,不易其他框架集成 總體來說,jpivot目前已經(jīng)不是一個玩具了,完全可以用于企業(yè)級的操作,而且定位在高端業(yè)務(wù)分析人員。
拿出來開源比較困難,一方面jpivot在不停升級,另一方面我在修改的時(shí)候不顧一切,在jpivot中亂引用了mondrian代碼,還把mondrian部分無用代碼全刪了。這樣,我就在這個帖里把能共享部分都在這里帖出來。 首先是我優(yōu)化后的界面。 1.圖標(biāo)用了pentaho里面的圖標(biāo)。 2.jpivot里面其實(shí)支持3D餅圖,只是選項(xiàng)未開,我先將jfreechart升級成1.0.2,又對餅圖、線圖等做了美觀。 3.drillthrough是jpivot相對其他olap產(chǎn)品的殺手級功能,但是有不少細(xì)節(jié)未完善。我基本都一一補(bǔ)上。 在界面上可以看出,我添加了一個CSV導(dǎo)出功能(改了WCF庫),同時(shí)限制最大導(dǎo)出20萬行記錄(改了jpivot)。界面上顯示的“訪問次數(shù)”是measure的名字,實(shí)際上應(yīng)該顯示“訪問時(shí)間”,該問題暫時(shí)無解。另外修正了一下numberformat、dateformat不正確的一些問題。 4.excel導(dǎo)出時(shí),格式很難看,但是由于excel本身只支持256色,無法顯示web上的底色,所以我修改了只顯示藍(lán)色的border,底色一律為白。 附件中rar里面是web的CSS文件、Excel的生成文件和jpivot的圖表生成部分代碼,感興趣的朋友各取所需吧
我在用Jpivot的時(shí)候,發(fā)現(xiàn)用mondrian是影響取數(shù)性能其中的一個瓶頸........ 經(jīng)研究.....我們自己修改了jpivot和wcf的一些代碼來適應(yīng)我們自己的項(xiàng)目.........以下是我做的一些修改.....想聽聽大家的意見 1.脫離mondrian.直接寫dll的方式取數(shù),然后生成XML數(shù)據(jù) .我發(fā)現(xiàn)脫離mondrian自己寫了一個DLL去調(diào)用MSSQL 2000 的OLAP,數(shù)度很快........... 2 .修改界面的顯示方式 上面也說道.Jpivot的界面一個不好看,二是用起來很不方便.比如取維度等的時(shí)候....一層一層的進(jìn)去實(shí)在很麻煩.... a.修改取維度的方式 我們參照ms的做法 做成一個了一個樹的取數(shù),研究jpivot里面的代碼.如果直接用jpivot的代碼取數(shù)據(jù)十分慢.這樣我自己通過AJAX和Jpivot結(jié)合,動態(tài)生成樹的結(jié)構(gòu),然后在樹上取維度的時(shí)候,直接通過鼠標(biāo)托到選擇維度textbox上.........依照條件生成相應(yīng)MDX....顯示數(shù)據(jù)..... b.修改數(shù)據(jù)顯示的樣式.和取維度,生成MDX分開了. 顯示數(shù)據(jù)我用了另外一種方式顯示.就是用Frame分為上下兩層.....上下兩層可以通過按鈕擴(kuò)大整個頁面........ 3. 集成在自己的框架中 集成在自己的框架中,我個人覺得是比較麻煩的一件事情.一點(diǎn)小事沒有搞好就很麻煩...因?yàn)槲覀兪怯肑SF開發(fā)的.所以依照J(rèn)pivot....自己寫了一些組件來輔助開發(fā),我自己開發(fā)主要改成比較像ms 2000 的olap分析方法... 還未完成的需求 JFreeChar的功能還需要加強(qiáng). 個人感覺:jpivot是很不錯.可是不能一拿來就用..我發(fā)現(xiàn)好多人用jpivot都要修改好多東西....但是修改起來又比較麻煩....java,j2ee,xml ,xslt,javascript,taglib.....好多東西都要懂.....
汗,我現(xiàn)在也在弄這個。。。。