The Open Java API for OLAP is growing up!

olap4j log
Software is typically built using two types of programming languages. On the one hand, we have query languages (e.g., XQuery, SQL or MDX). On the other, we have the regular programming languages (C/C++, Java, Python, Ruby). A lot of effort is spent on the mismatch between these two programming styles. It remains a sore point in many projects.

Microsoft has been trying especially hard to resolve this mismatch. Their LINQ component allows you to use relational or XML data sources directly in your favorite language (e.g., C#).

Oracle has its own solution, the Oracle Java API. It allows you to query OLAP databases directly from Java, without SQL or MDX.

Unfortunately, these solutions are vendor-specific. With the rise of Open Source Business Intelligence, we seek open solutions which are shared and co-developed.

That is what the Open Java API for OLAP (olap4j) is. Anyone can build an OLAP engine and offer support for olap4j. You then get MDX support for free. Best of all, an application written against olap4j should work with any olap4j-compliant OLAP server which includes SQL Server Analysis Service and SAP Business Information Warehouse. And if you add Mondrian, you can get olap4j compliance out of any common relational database management system such as MySQL.

Lead by the Linus Torvalds of OLAP (Julian Hyde), olap4j finally reached version 1.0. A leading-edge feature I find interesting is that olap4j supports notifications which should enable real-time OLAP applications. Whenever something changes at the database level, the OLAP server can notify its clients, effectively pushing a notification. One obvious application is in the financial industry where data must be quickly updated.

Further reading: The press release for olap4j 1.0. Julian Hyde’s blog post on this topic. Luc Boudreau’s blog post. See also some of my older blog posts: JOLAP is dead, OLAP4J lives? (2008) and JOLAP versus the Oracle Java API (2006).

Leave a Reply

Your email address will not be published. Required fields are marked *