There has been an interesting
design discussion on the olap4j forums about how an OLAP server could notify its client that the data set has changed. It is exciting because it would allow us to efficiently update OLAP displays in real-time.
We came up with an API, at the center of which is
the new interface CellSetListener, which I have just checked into
olap4j's subversion repository. (The API is experimental. That means you shouldn't expect to find a working implementation just yet, or assume that the API won't change radically before it is finalized, but it does mean we are still very much open to suggestions for improvements.)
Of course, OLAP notifications are a subject close to my heart, because they bring together my interests in
SQLstream and
mondrian. 'Push-based' computing is challenging, because every link in the chain needs to propagate the events to the next link. In a previous post
I described how SQLstream could do continuous
ETL, populate fact and aggregate tables incrementally, and notify mondrian that data items in its cache were out of date.
A mondrian implementation of the CellSetListener API would cause mondrian to internally re-evaluate all queries that have listeners and cover an affected area of the cache. If the results of those queries changed, mondrian would transmit those notifications to OLAP client applications such as
Pentaho Analyzer or
PAT. The client application would then change the value of the cell on the screen, and maybe change the cell's background color momentarily to attract the user's attention.
Getting data to change on the screen, in front of the end-user's eyes, within seconds of the data changing in the operational system, would be truly spectacular.
There are several links in the chain to make that happen. Two of the links, SQLstream and
mondrian's cache control API, are already complete. We've just begun forging the next link.
More from Julian Hyde on Open Source OLAP Blog ...