緣起:
在默認的情況下,saiku是不能對數據進行實時展現的,只能通過刷新按鈕或者重啟服務器來刷新數據
這樣以來會有很多的麻煩,每天得手動去刷新,這個操作只有管理員可以操作,在刷新以前客戶看到的都是緩存中的舊數據。
有人說寫個shell去定時更新不行嗎?這個做法當然可以。
除了這個做法,還可以讓saiku查詢完數據后即時加載。
不用數據庫連接池,加載完成后立刻清除緩存中的數據,系統下次在加載的時候發現緩存是空的,就會自動去查詢新數據,這樣以來就可以做到實時展現.
具體修改如下:
(1)編輯 saiku/ui/js/saiku/Settings.js 將 LOCALSTORAGE_EXPIRATION: 10 * 60 * 60 * 1000 /* 10 hours, in ms */ 修改為:LOCALSTORAGE_EXPIRATION: 1 (2)編輯 saiku/plugin.spring.xml
將 <bean id="connectionManager" class="org.saiku.plugin.PentahoSecurityAwareConnectionManager" init-method="init" destroy-method="destroy"> <property name="dataSourceManager" ref="pentahoDsManager" /> <property name="userAware" value="false" /> <property name="connectionPooling" value="true" /> </bean> 修改為: <bean id="connectionManager" class="org.saiku.plugin.PentahoSecurityAwareConnectionManager" init-method="init" destroy-method="destroy"> <property name="dataSourceManager" ref="pentahoDsManager" /> <property name="userAware" value="false" /> <property name="connectionPooling" value="false" /> </bean> (3)編輯mondrian/mondrian.properties 將 mondrian.rolap.star.disableCaching=false 修改為:mondrian.rolap.star.disableCaching=true
