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