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.