Hi folks,
we have the following requirement:
Changes done in a productive system should be mirrored to the analytic system asap. For example: A user creates a report for last month and figures out some data is missing. He looks up the data in the productive system and recognizes that some of the data has been added to the wrong month. He corrects the data and reruns the report. Of course he would expect to have the corrected data inside the report now. But usually ETL-Jobs are scheduled in nightly, maybe hourly manner.
So how to solve the problem?
- Schedule the ETL-Job for every minute.
- Make the Job lightweight => Use timestamps in the source-system to detect changes. Instead of rebuilding the whole fact table only update changed rows
- Tell the user it takes the maximum of one minute for a change to be represented in the analytic system
The Problem?
The Cache of course. The mondrian cache can be flushed easily completely but when it comes to fine grained flushing it get's complicated*
I see two possible solutions:
- Create a Servlet, which takes parameters from a HTTP-Request coming from the ETL-Job and executes updates on the Cube
- Create some wicked Talend Component which does that job.
My questions?
- Isn't there any wrapper-library for Mondrian Cache Control API?
- Someone has experience with fine grained cache flushing and likes to share it?
- What about all the other caches? Reporting / CDA / Saiku?
* =
http://mondrian.pentaho.com/api/mondrian/olap/CacheControl.html
http://wiki.pentaho.com/display/COM/...+the+BI+Server