From f2da51497ee28d9390fa1d2dad0d2636b7d63690 Mon Sep 17 00:00:00 2001
From: Julian Hyde Author(s): Julian Hydeolap4j Functional Specification
-Status: draft (version 0.5)
-Last modified: August 23rd, 2006.
+Last modified: September 1st, 2006.
olap4j is an open Java API for building OLAP applications.
+In essence, olap4j is to multidimensional data JDBC is for relational data. olap4j has a similar programming model to JDBC, shares some of its core classes, and has many of the same advantages. You can write an OLAP application in Java for one server (say Mondrian) and easily switch it to another (say Microsoft Analysis Services, accessed via XML for Analysis).
+However, creating a standard OLAP API for Java is a contentious issue. To understand why, it helps to understand the history of OLAP standards.
+History is strewn with attempts to create a standard OLAP API. First, the OLAP council's @@ -49,6 +52,7 @@
The Open Source community has been developing a taste for OLAP. First there was Mondrian, an open-source OLAP server; then there was JPivot, a client which first spoke to Mondrian, then also to XML/A; then there were more OLAP clients, and applications which wanted to @@ -56,16 +60,20 @@
An OLAP application interacts with an OLAP server by means of MDX statements belonging to connections. The statements are defined in terms of metadata and validated according to a type system, and some applications are built at a higher level, manipulating MDX parse trees, and defining complex queries in terms that a business user can understand. The olap4j API provides all of these facilities.
+At the lowest level, olap4j has a framework for registering drivers, and managing the lifecycle of connections and statements. olap4j provides this support by extending the JDBC framework.
+A key decision in the design of an OLAP API is whether to include a query language. Historically, it has been a contentious one. The previous standards fell into two camps: MDAPI and JOLAP had an API for building queries, @@ -77,6 +85,7 @@
Metadata is at the heart of olap4j. You can browse the cubes,
dimensions, hierarchies, members in an OLAP schema, and an MDX parse tree and
query result are tied back to the same metadata objects. There is also a type
@@ -106,6 +115,7 @@ olap4j and XML/A
XML/A provider to connect to the underlying data source, execute queries, and
browse metadata, but can still use olap4j's features for MDX parsing, query
models and layout.
Once the olap4j standard is in place, we can expect that the familiar @@ -113,6 +123,7 @@
Eventually there will be olap4j providers for most OLAP servers. The server vendors will initially have little incentive to embrace a standard which will introduce competition into their market, but eventually the wealth of tools will @@ -377,7 +388,9 @@
The components of the OLAP model are available as read-only Java classes.
+A user's view of metadata may be subject to access control. For example, a user may not have read access to certain hierarchies within a cube, or to certain members within a hierarchy. The API methods must behave consistently @@ -501,26 +514,50 @@
In principle, providers could be created to other OLAP data sources. This would be particularly straightforward for servers which already have a native Java API.
+The following are features which have been suggested for inclusion in the olap4j specification, but which are not part of the current version. They may be included in future revisions of the specification.
+Include support for Date and Time values. The package org.olap4j.mdx.type could have additional classes DateType and TimeType.
+(Richard Emberson, 2006/8/14)
+Add a mechanism for the client to detect that the schema has been modified (for instance, that a cube has been added). Not necessarily to find out what those changes are.
+(Richard Emberson, 2006/8/15)
+One thing we found about XMLA was that our users wanted all roles to be defined, stored, modified, and accessed though the same mechanism. With a large application with many areas that can be permissioned, it is important that olap4j let an application builder manage roles externally and apply them as part of an individual's execution context.
+ +These issues will be voted upon at the next meeting. If they are accepted, +they will generally be put into the spec.
+ +See forum thread: + +olap4j, JDK 1.5 and generics. I am proceeding on the assumption that we are +targeting JDK 1.5, and running retroweaver for backward compatibility for JDK +1.4.