Le noyau de Mondrian est un fichier JAR qui agit comme un pilote "JDBC pour OLAP": il fournit des connexions aux bases de données relationnelles sous-jacentes et exécute les instructions SQL. Ce paquet se conduit comme une interface avec ces bases de données. Le programme Mondrian peut être livré :
Les deux distributions contiennent les programmes sources Mondrian. Tous les fichiers JARs nécessaires à Mondrian sont contenus dans l'archive WAR du répertoire /WEB-INF/lib.
Voici comment installer la distribution:
mondrian-version.zip
depuis SourceForge,
et décompressez-la.Si vous êtes un développeur Mondrian, il y a des instructions supplémentaires pour accéder au serveur des programmes sources (Perforce) et compiler le code dans le guide du développeur.
La base de données test 'FoodMart' fait partie de
la distribution non-embarquée. Elle est livrée
sous deux formats: une base Microsoft Access
(demo/access/MondrianFoodMart.mdb
) et un
script SQL pour insérer les tables au sein de votre base de
données (demo/FoodMartCreateData.sql
).
Sous windows, utiliser la base de données Access est l'installation la plus facile, parce que vous avez juste besoin de définir une source de données ODBC. Si vous voulez tester une base de données autre qu'Access ou si vous n'êtes pas dans un environnement Windwos, vous aurez à créer votre propre base de données vierge et aurez à charger cette base de données avec l'utilitaire MondrianFoodMartLoader.
Si vous utilisez Windows, Microsoft Access est la base de données la plus facile à utiliser comme base de données test. Vous avez juste besoin d'installer une source de données ODBC pour la base test.
La base test a besoin d'être accédée si vous ne testez que l'accès à cette base, ou elle devra être chargée dans une autre base.
Dans le menu 'Outils d'administration', cliquez sur l'item
'Sources de données
(ODBC)' pour ouvrir la boîte d'administration des sources de
données ODBC.
Ensuite, créez un DSN Système appelé MondrianFoodMart
pointant sur
MONDRIAN_HOME/demo/access/MondrianFoodMart.mdb
.
(Cela permettra à Mondrian d'accéder
à la source de données en utilisant la
chaîne de connexion "jdbc:odbc:MondrianFoodMart
".
Si vous n'utilisez pas Access, utilisez l'utilitaire MondrianFoodMartLoader pour créer une base de données et charger les données avec le script SQL.
MondrianFoodMartLoader
[-verbose] [-tables] [-data] [-indexes]
-jdbcDrivers=<jdbcDrivers>
-outputJdbcURL=<jdbcURL>
[ [ [-outputJdbcUser=user]
[-outputJdbcPassword=password] [-outputJdbcBatchSize=<batch
size>] ]
| -outputDirectory=<directory
name>
]
[ [-inputJdbcURL=<jdbcURL>
[-inputJdbcUser=user] [-inputJdbcPassword=password] ]
| [-inputFile=<file name>]
]
Option | Description |
-verbose |
mode verbeux. |
-tables |
Crée les tables dans la sortie JDBC, ou génère une instruction CREATE TABLE dans le répertoire de sortie pour toutes les tables FoodMart, de façon appropriée pour le type de votre base de données. Si cela est non précisé, les tables sont considérées comme déjà existantes et elles seront tout d'abor supprimées. |
-data |
Charge les données depuis l'entrée (JDBC, fichier d'instruction d'insertion) vers la sortie (JDBC, fichier d'instruction d'insertion). Toutes les données existantes seront tout d'abord supprimées. |
-indexes |
Crée les index dans la sortie JDBC, ou génère une instruction CREATE INDEX dans le répertoire de sortie pour toutes les tables FoodMart, de façon appropriée pour le type de votre base de données. |
-jdbcDrivers= <driver
list> |
liste de pilotes
séparée par des virgules nécessaire
pour se connecter à la base de données source et
cible. Les fichiers JAR
contenant ces pilotes doivent également se trouver dans
le classpath (l'option -cp
dans la commande java ). |
-outputJdbcURL=<jdbcURL> |
Url JDBC pour la base de données cible |
-outputJdbcUser=<user> |
Utilisateur pour la base de données cible |
-outputJdbcPassword=<password> |
Mot de passe pour la base de données cible |
-outputDirectory=<directory
name> |
Optionnel. Répertoire dans lequel se trouvera le script de création de la base de données. Les instructions SQL seront dans le format du type de base de données spécifié par l'option outputJdbcURL. |
-outputJdbcBatchSize=<batch
size> |
Taille du lot pour les instruction INSERT. Par défaut à 50. Si mis à la valeur 1, la fonction lot (batch) JDBC n'est pas utilisée. |
-inputJdbcURL=<jdbcURL> |
Url JDBC pour la base de données source |
-inputJdbcUser=<user> |
Utilisateur pour la base de données source |
-inputJdbcPassword=<password> |
Mot de passe pour la base de données source |
-inputFile=<file
name> |
Optionnel. Si aucun paramètre n'est donné pour la base de données source, les données sont censées provenir du fichier passé en argument. |
La source usuelle pour
l'utilitaire MondrianFoodMartLoader est un script SQL ([-inputFile=<file
name>]
). Cependant, si vous avez
déjà chargé les données au
sein d'une source de données JDBC (par exemple Microsoft
Access), utilisez l'option
-inputJdbcURL
et les autres options en relation avec
celle-ci pour accéder à une autre base de
donées
JDBC.
Le chargeur utilise le standard J2SE JDBC, le pilote JDBC approprié pour les fichiers JARs, et quelques classes externes à Mondrian qui ne sont pas attachées à des fichiers additionnel JARs. Tout cela a été testé avec Oracle, Postgres, MySQL et Microsoft Access.
Si votre base de données cible est une base de données JDBC, vous devez créer en premier lieu la base de données et le schéma des tables. Cela doit être une base de données spécifique au jeu de test.
Vous pouvez en toute sécurité ignorer ces avertissements log4j:
log4j:WARN No appenders could be found
for logger
(mondrian.rolap.RolapUtil).
log4j:WARN Please initialize the log4j system properly.
Vous trouverez ci-dessous quelques exemples pour vous donner
une idée générale de comment
MondrianFoodMartLoader
est
invoqué. La ligne de commande que vous utiliserez
dépendra bien sûr de votre environnement, de votre
base de données source et cible.
L'exemple suivant est une ligne de commande linux pour
créer une base MySQL appelée
'foodmart', puis créer les tables
FoodMart depuis le jeu de données inclus dans le script SQL.
En premier lieu, on crée une base de données foodmart
et un utilisateur foodmart
:
$
mysqladmin create foodmart
$ mysql
mysql> grant all privileges on *.* to
'foodmart'@'localhost' identified by 'foodmart';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
Puis on charge les données:
$java
-cp
"/mondrian/lib/mondrian.jar:/mondrian/lib/log4j-1.2.9.jar:/mondrian/lib/eigenbase-xom.jar:/mondrian/lib/eigenbase-resgen.jar:/mondrian/lib/eigenbase-properties.jar:/usr/local/mysql/mysql-connector-java-3.0.16-ga-bin.jar"
mondrian.test.loader.MondrianFoodMartLoader
-verbose -tables -data -indexes
-jdbcDrivers=com.mysql.jdbc.Driver
-inputFile=/mondrian/demo/FoodMartCreateData.sql
-outputJdbcURL="jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart"
L'exemple suivant est une ligne de commande windows pour créer les tables FoodMart dans une base PostgreSQL depuis le jeu de test de la base Access:
C:\mondrian>
java -cp
"C:\mondrian\lib\mondrian.jar;C:\mondrian\lib\log4j-1.2.9.jar;
C:\mondrian\lib\eigenbase-xom.jar;
C:\mondrian\lib\eigenbase-resgen.jar;
C:\mondrian\lib\eigenbase-properties.jar;
C:\mondrian\lib\postgres-jdbc.jar"
mondrian.test.loader.MondrianFoodMartLoader
-verbose -tables -data -indexes
-jdbcDrivers="org.postgresql.Driver,sun.jdbc.odbc.JdbcOdbcDriver"
-inputJdbcURL="jdbc:odbc:MondrianFoodMart"
-outputJdbcURL="jdbc:postgresql://localhost/foodmart"
-outputJdbcUser=postgres
-outputJdbcPassword=password
lib/mondrian.war
dans le répertoire TOMCAT_HOME/webapps/mondrian
TOMCAT_HOME/webapps/mondrian
et personnalisez-le mondrian.jdbcDrivers
en fonction de la base de données utilisée.TOMCAT_HOME/webapps/mondrian/WEB-INF
et personnalisez-le avec les deux chaînes de connexion que
vous avez utilisées pour la base de données test.
Cela:
Provider=mondrian;Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver;
devient
Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=com.mysql.jdbc.Driver;
fourheir.jsp
,
mondrian.jsp
, colors.jsp
ainsi que le fichier arrows.jsp
dans le
répertoire TOMCAT_HOME/webapps/mondrian/WEB-INF/queries
.
Modifier les lignes
<jp:mondrianQuery id="query01"
jdbcDriver="sun.jdbc.odbc.JdbcOdbcDriver"
jdbcUrl="jdbc:odbc:MondrianFoodMart"
catalogUri="/WEB-INF/queries/FoodMart.xml">
avec les paramètres de votre base de données FoodMart database. Pour MySQL, cela donnera quelque chose du genre:
<jp:mondrianQuery id="query01"
jdbcDriver="com.mysql.jdbc.Driver"
jdbcUrl="jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart"
catalogUri="/WEB-INF/queries/FoodMart.xml">
TOMCAT_HOME/common/endorsed
xalan.jar
dans le répertoire TOMCAT_HOME/common/endorsed
lib/mondrian-embedded.war
dans le répertoire TOMCAT_HOME/webapps/mondrian-embedded
Pour installer le service XMLA service, suivez les étapes suivantes.
datasources.xml
Dans le répertoire WEB-INF de votre webapp,
créer un fichier datasources.xml
,
avec un contenu comme celui-ci:
<?xml version="1.0"?>
<DataSources>
<DataSource>
<DataSourceName>MondrianFoodMart</DataSourceName>
<DataSourceDescription>FoodMart 2000 Data
Warehouse From MS Analysis
Services</DataSourceDescription>
<URL>http://localhost:8080/mondrian/xmla</URL>
<DataSourceInfo>Provider=mondrian;
Jdbc=jdbc:odbc:MondrianFoodMart;
JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver</DataSourceInfo>
<ProviderType>MDP</ProviderType>
<AuthenticationMode>Unauthenticated</AuthenticationMode>
<Catalogs>
<Catalog name="FoodMart">
<Definition>/WEB-INF/schema/FoodMart.xml</Definition>
</Catalog>
<Catalog name="Marketing">
<DataSourceInfo>Provider=mondrian;
Jdbc=jdbc:odbc:MarketingDB;
JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver</DataSourceInfo>
<Definition>/WEB-INF/schema/Marketing.xml</Definition>
</Catalog>
</Catalogs>
</DataSource>
<DataSource>
<DataSourceName>PostgreSQLTest</DataSourceName>
<DataSourceDescription>Test Data Warehouse On
PostgreSQL</DataSourceDescription>
<URL>http://localhost:8080/mondrian/xmla</URL>
<DataSourceInfo>Provider=mondrian;
Jdbc=jdbc:postgresql://localhost/olap;
JdbcDrivers=org.postgresql.Driver; JdbcUser=pgsql;
JdbcPassword=pgsql</DataSourceInfo>
<ProviderName>Mondrian</ProviderName>
<ProviderType>MDP</ProviderType>
<AuthenticationMode>Unauthenticated</AuthenticationMode>
<Catalogs>
<Catalog name="Test">
<Definition>/WEB-INF/schema/TestPgsql.xml</Definition>
<Catalog>
</Catalogs>
</DataSource>
</DataSources>
<ProviderType>
et <AuthenticationMode>
sont ignorés carl'implémentation XML/A ne
supporte pas encore 'MDP' et 'Unauthenticated'.
Si vous avez l'intention d'utiliser Mondrian avec la librairie
du client Microsoft ADOMD.NETou Simba's
O2X bridge, les fichiers des sources de données
doivent avoir un seul élément <DataSource>
.
Ces clients ne prendront en compte qu'une seule base de
données. Les autres clients, comme
Rex,
fonctionne parfaitement avec des bases de données multiples.
Veuillez noter que chaque catalogue posède
un attribut nom, et l'URI (répertoire) d'un
fichier XML. Le nom du catalogue doit correspondre
à l'attribut utilisé dans le fichier XML (par
exemple <Schema name="FoodMart">
).
Que vous utilisiez une ou plusieurs sources de
données, les catalogues dans le fichier datasources.xml
doivent avoir un nom unique.
web.xml
Par exemple:
<servlet>
<servlet-name>MondrianXmlaServlet</servlet-name>
<servlet-class>mondrian.xmla.impl.DefaultXmlaServlet</servlet-class>
</servlet>
mondrian.properties
Les propriétés sont décrites dans le Guide de Configuration.
Vous aurez besoin de préciser la quantité de mémoire autorisée pour le cache en utilisant l'option -Xms de la machine virtuelle Java, par exemple -Xms256m pour 256 megs de mémoire of ram pour la machine virtuelle Java.
Mondrian fonctionne avec les bases de données suivantes:
Mondrian peut fonctionner avec la plupart des sources de données JDBC, même si votre base de données n'apparaît pas dans la liste ci-dessus, vous devriez essayer. Mondrian peut généralement le SQL en conséquence.
Si vous vous apercevez que Mondrian fonctionne avec une autre base de données, faites le nous savoir. Dites nous quel pilote vous utilisez, la version de votre base de données, les paramètres utilisés et tout ce dont vous avez eu besoin.
Pour des exemples de chaînes de connexion, regardez
dans le fichier
mondrian.properties
.
Il s'y trouve des exemple de chaînes de connexion pour la
plupart des bases de données citées.
Andy Grimm écrit:
En plus, j'ai du exécuter la commande perl suivante
>perl -pi -e "s/:00\.0/:00/g" FoodMartCreateData.sql
Cela a permis que le format des dates soit une date valide en enlevant le ".0" pour chacun des timestamp. Notre prochaine version supportera timestamps. Ceci est donc un truc pour une durée brève.
J'ai essayé plusieurs voies pour utiliser Mondrian (version 2.1RC) connecté avec un serveur de base de données base Sybase ASE [version 12.5]. Finalement, j'ai trouvé cette solution:
- Télécharger un pilote compatible jdbc3 comme jtds-1.2.jar sur sourceforge.
- Placer le pilote dans le répertoire TOMCAT_HOME/common/endorsed
- Dans les fichiers de configuration comme
J'ai modifié les paramètres de cette façon:
- mondrian/WEB-INF/datasources.xml
- mondrian/WEB-INF/web.xml
(Le fichier datasources.xml semble ne pas avoir besoin d'être modifié si vous testez juste la base de données,mais vous en aurez besoin pour OPENI par exemple)Provider=mondrian; JdbcUser=userName; JdbcPassword=userPass; Jdbc=jdbc:jtds:sybase://xxx.xxx.xxx.xxx:port/dbName; JdbcDrivers=net.sourceforge.jtds.jdbc.Driver; Catalog=/WEB-INF/queries/myCatalog.xml
Weblogic 6.1 est fourni avec une version ancienne et incompatible de Xerces. Le symptome est l'erreur suivante
java.lang.VerifyError: (class:
org/eigenbase/xom/wrappers/XercesDOMParser, method: parse signature:
(Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;) Incompatible object
argument for function call
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:120)
at org.eigenbase.xom.XOMUtil.createDefaultParser(XOMUtil.java:165)
at org.eigenbase.resgen.Util.load(Util.java:49)
...
La solution est de placer xml-apis.jar
et xercesImpl.jar
avant weblogic.jar
dans votre class-path.
Generalement, Mondrian utilise un parseur XML compatible JAXP fourni par le système. Malheureusement, le parseur de Weblogic ne fonctionne pas en mode non-validé, mode que requiert Mondrian. Par conséquent, dans un environnement Weblogic, Mondrian utilise explicitement Xerces. Cette notice décrit comme changer le parseur par défaut de Weblogic.
Les distributions Mondrian, requiert JDK 1.4.x, Xalan 2.6.0, et Tomcat 5.0.25 ou supérieur. Les choses fonctionnent mieux ainsi..
Si vous exécutez JDK 1.3.x,
vous aurez besoin de fichiers JAR
supplémentaires, parce que JDK 1.3 n'inclut pas le
parseur XML. Copiez xalan.jar
et xml-apis.jar
dans le répertoire TOMCAT_HOME/common/lib
.
(ou TOMCAT_HOME/common/endorsed
,
si votre version de Tomcat dispose de ce répertoire). Si
vous disposez d'une mauvaise configuration, alors, l'erreur typique
sera celle-ci:
java.lang.VerifyError: Cannot inherit
from final class
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1664)
at
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:953)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1394)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1274)
at
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.createContentDispatcher(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.<init>(XMLDocumentFragmentScannerImpl.java:249)
at
org.apache.xerces.impl.XMLDocumentScannerImpl.<init>(XMLDocumentScannerImpl.java:245)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.<init>(Unknown
Source)
at
org.apache.xerces.parsers.IntegratedParserConfiguration.createDocumentScanner(Unknown
Source)
at
org.apache.xerces.parsers.DTDConfiguration.<init>(DTDConfiguration.java:367)
at
org.apache.xerces.parsers.StandardParserConfiguration.<init>(StandardParserConfiguration.java:198)
at
org.apache.xerces.parsers.IntegratedParserConfiguration.<init>(Unknown
Source)
at
org.apache.xerces.parsers.IntegratedParserConfiguration.<init>(Unknown
Source)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
Vous aurez cette erreur avec JDK 1.3.1, Tomcat 4.1.18, Xalan
2.4.1. Les solutions pour cette erreur sont (a) de mettre
à jour le JDK en version1.4 et supprimer xml-apis.jar
et xercesImpl.jar
de la librairie mondrian.war
,
ou (b)
revenir à Xalan 2.3.1.
Les librairies WARs Mondrian sont fournies avec une version packagée de log4j.jar. Cela peut engendrer un conflit avec votre serveur d'application, tel JBoss, et causer des erreurs dans le journal au sujet des appels log4j. Pour fixer ce problème, enlever le fichier log4j.jar de la librairie WAR Mondrian.
Author: Julian Hyde and others; last updated October, 2006;
translation into French by Manfred Sherlock Olm based on install.html#70; last updated
April, 2007
Version: $Id$ (log)
Copyright (C) 2001-2005 Julian Hyde
Copyright (C) 2005-2007 Pentaho