Lemur OLAP Library

This project is hosted on Savannah


As a crude approximation, we could say that Lemur OLAP is an open source (GPL) Hybrid OLAP library written in C++ but callable from other languages like Java or Python.

To our knowledge, there is no free software low level OLAP library implementing Hybrid OLAP. There is Mondrian which is a great Java-based ROLAP engine, but we believe that a smart C++ implementation can outperform a DBMS (using Mondrian) platform for many tasks including text mining, science intelligence and so on.

To be fair though, the primary goal of this library at this time is to support our research interests since our goal are probably too ambitious to deliver timely usable code. We do envision though that the library could be used soon for some niche applications.

We support basic operations like slicing, rollups, dicing. Attribute values must be stored separately however: we only provide the core engine.


If you are just looking for an OLAP interface to your favorite database, please check Mondrian. It is written in Java and uses ROLAP. It is quite good and a lot more user-friendly than Lemur (but it doesn't do MOLAP, HOLAP, nor is it in C++). It supports MDX and XMLA 1.0 which Lemur OLAP will never support.

Palo is a MOLAP server than can run under Linux, interface with Excel, PHP and Java (at least these 3). It might be an excellent solution if your cubes have a small volume.

We don't know of any other alternative other than using closed source software (which is recommended for many projects anyhow).


GPL, of course.

Who are we?

The project is lead by Daniel Lemire, professor at the University of Quebec at Montreal (UQAM), and Owen Kaser, associate professor at the University of New Brunswick (Saint John).

The following students are or have been involved:

We thank Steven Lembark from Cheetahmail for some valuable contributions including a cleaner file tree.

Where's the source?

You can browse Steven Lembark's CVS tree; there are instructions on how to grab a copy of the CVS tree. As of May 1st 2006, there are some small differences in the source code between the internal version (see tar ball below) and Steven's tree due to incomplete merges. We plan to make those go away soon. For now, you can pick up either version. Anyone willing to look at the merge (where the tar ball takes over) and contribute to the CVS tree is welcome to do so.

lemurolap_01052006.tar.gzMay 1st 2006 (most recent)102 Kb
lemurolap_16032006.tar.gzMarch 16th 2006100 Kb
lemurolap_07012006.tar.gzJanuary 7th 200684 Kb
lemurolap_16082005.tar.gzAugust 16th 200553 Kb
lemurolap_12082005.tar.gzAugust 12th 200552 Kb
lemurolap_25072005.tar.gzJune 25th 200551 kB
lemur_code.zipFebruary 19th 2004 (oldest)1 034 kB

It runs under GNU/Linux though it could be ported. A recent compiler is assumed (gcc 3.4 and better). If you want to run it through Java, Java version 5.0 is highly recommended.


As of now, the package is not suitable for commercial usage and is of an alpha quality. However, it was succesfully used in a research context (see Kaser and Lemire, DOLAP'03 or Keith, Kaser and Lemire, TR-05-001). As of May 2006, Stephen Keith completed a M.Sc. thesis based on Lemur OLAP. There is some level of regression testing, but we are still designing the API.

If you are not a developer, this is not for you!

Who do you complain to?

Visit Daniel Lemire's web page, find his email address and send him a polite note.