Skip navigation links
Mondrian is an OLAP server implemented in Java.

See: Description

Packages 
Package Description
mondrian.calc
Provides compiled expressions.
mondrian.calc.impl
Provides implementation classes for compiled expressions.
mondrian.gui
Contains a workbench written in Swing for designing Mondrian schemas.
mondrian.gui.validate  
mondrian.gui.validate.impl  
mondrian.i18n
Utilities for internationalization and localization.
mondrian.mdx
Defines a parse tree for MDX expressions.
mondrian.olap
Mondrian's core package, this defines connections and the catalog metamodel, and allows you to execute queries.
mondrian.olap.fun
Defines the set of MDX built-in functions.
mondrian.olap.fun.extra
Defines MDX extension functions.
mondrian.olap.fun.vba
Implements the set of functions defined by the Visual Basic for Applications (VBA) specification.
mondrian.olap.type
Type system for MDX expessions.
mondrian.olap4j
olap4j driver for the Mondrian OLAP engine.
mondrian.parser  
mondrian.recorder
Provides a set a classes for logging the process of a task.
mondrian.resource  
mondrian.rolap
Implements the data access layer for the olap package.
mondrian.rolap.agg
Manages a cache of aggregates containing cell values.
mondrian.rolap.aggmatcher
Defines a 'matcher' which scans the schema to find candidate aggregate tables.
mondrian.rolap.cache
Provides primitives for policy-based caching.
mondrian.rolap.format  
mondrian.rolap.sql
Database-independent library for generating SQL.
mondrian.server
Augments the Mondrian engine with server functionality.
mondrian.server.monitor  
mondrian.spi
Contains the server-provider interfaces (SPIs) which user-defined extensions to Mondrian should implement.
mondrian.spi.impl
Provides implementations of SPIs defined in the mondrian.spi package.
mondrian.test
Suite of regression tests.
mondrian.test.build
Regression tests relating to the build process.
mondrian.test.clearview  
mondrian.test.comp
Utilities for comparison-based testing.
mondrian.test.loader
Utilities to load test data.
mondrian.tui
Text user interface for Mondrian.
mondrian.udf  
mondrian.util
Mondrian utilities.
mondrian.web.servlet  
mondrian.web.taglib
Provides a tag library for embedding MDX queries in JSP pages.
mondrian.xmla
Implements the XML for Analysis API.
mondrian.xmla.impl  
mondrian.xmla.test  
Mondrian is an OLAP server implemented in Java.

Introduction

See architecture.

Components

Query transformer

See Parser.

Metadata

It is represented as an XML file. The metadata is loaded into memory the first time you reference a dimensional model. You can modify the model at runtime by creating instances of classes such as RolapHierarchy.

Calculation layer

todo: See Query and Result.

todo: The package mondrian.rolap. is the one and only implementation of the API. The DriverManager (class DriverManager) acts as class-factory.

todo: How members are calculated...

todo: How aggregations are batched...

todo: MDX functions. See user-defined functions.

Aggregation manager

Aggregations are based upon the relational model: as far as the aggregation manager is concerned, there is no relationship between the columns city and state. This means that all roll-ups are the same: you just drop a column. Consider the 3 roll-ups possible by dropping a column from the aggregation {gender, city, state}: dropping gender is equivalent to removing the [Gender] dimension; dropping city is equivalent to rolling up to a higher level in the [Geography] hierarchy; and dropping state is not even allowed in the dimensional model (no, sorry, you can't ask about products sold in a cities called 'Portland'). This approach will also allow us to implement 'drill anywhere'.

An aggregation is defined by a search condition, for example, {state in ('CA', 'OR', 'WA'), city = any, gender = 'M', measure = 'Unit sales'}. The any value is important; if we had asked for a specific set of cities, we would not later be able to roll-up by dropping the city column.

The caching strategy is to throw out the aggregation with the lowest cost/benefit ratio. The 'benefit' of an item is the effort it took to produce (effort which it is saving future queries) multiplied by its 'usefulness' which declines exponentially if it is not used over time. The 'cost' of an item is its size.


$Id$ (log)
Skip navigation links
Get Mondrian at SourceForge.net. Fast, secure and free Open Source software downloads