Comment installer Mondrian
- Introduction
- Installer les
données test avec une base de données non
embarquée
- Microsoft
Access
- Autre Base
de données
- Déployer
et exécuter une application web avec une base de
données non embarquée
- Déployer
et exécuter une application web avec la base de test
embarquée
- Comment
configurer Mondrian comme fournisseur de XML/A
- Décrire
les sources de données dans
datasources.xml
- Configurer
XmlaServlet dans votre web.xml
- Divers
- Configurer
mondrian.properties
- Installation du
système de mémoire Cache
- Compatibilité
des Bases de données
- Problèmes
de compatibilité
- Weblogic
6.1 et Xerces
- Xalan et
Tomcat
- Log4j et
Tomcat
1. Introduction
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é :
- comme une librairie WAR incluant JPivot, un environnement
de travail web OLAP et des données exemple pouvant
être chargées dans la base de données
de
votre choix.
- comme une librairie WAR, incluant JPivot et une base de
données embarquée
Derby, ce qui ne demandera aucune installation
supplémentaire pour déployer cette librairie avec
un serveur d'application web.
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:
- Installer le Java SDK (1.4.2 ou supérieur).
- Télécharger la dernière
version
mondrian-version.zip
depuis SourceForge,
et décompressez-la.
- Pour la distribution non embarquée, installer le
jeu de données "FoodMart", comme décrit dans
la section 2.
- Installer et démarrer l'application web, comme
décrit dans la section
3 ou 4.
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.
2.1. Microsoft Access
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 ".
2.2. Autres bases de données
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.
Syntaxe
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>]
]
Options
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.
Exemples
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.
Exemple 1. Chargement dans MySQL depuis un fichier
sous Linux
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"
Exemple 2. Chargement dans PostgreSQL
depuis Access sous Windows
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
3. Déployer and exécuter une
application web avec une base de données non
embarquée
- Installer Tomcat (version 5.0.25 ou supérieure).
- Depuis la distribution décompressée,
décompresser
lib/mondrian.war
dans le répertoire TOMCAT_HOME/webapps/mondrian
- Ouvrir le fichier mondrian.properties dans le
répertoire
TOMCAT_HOME/webapps/mondrian
et personnalisez-le mondrian.jdbcDrivers
en fonction de la base de données utilisée.
- Ouvrir le fichier web.xml dans le
répertoire
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;
- Modifier le fichier
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">
- Copier les fichiers suivants:
- Si besoin, copier votre pilote JDBC (fichier
JARà dans le répertoire
TOMCAT_HOME/common/endorsed
- Copier le fichier
xalan.jar
dans le répertoire TOMCAT_HOME/common/endorsed
- Démarrer votre base de données, si
besoin.
- Cliquer sur http://localhost:8080/mondrian.
4. Déployer et exécuter l'application
web avec une base de données embarquée
- Depuis la distribution décompressée,
décompresser
lib/mondrian-embedded.war
dans le répertoire TOMCAT_HOME/webapps/mondrian-embedded
- Démarrer Tomcat
- Cliquer sur http://localhost:8080/mondrian-embedded
5. Comment configurer Mondrian comme un fournisseur
XML/A
Pour installer le service XMLA service, suivez les
étapes suivantes.
1. Décrire les sources de données dans 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'.
Sources de données et catalogues multiples
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.
5.2. Configurer XmlaServlet dans votre web.xml
Par exemple:
<servlet>
<servlet-name>MondrianXmlaServlet</servlet-name>
<servlet-class>mondrian.xmla.impl.DefaultXmlaServlet</servlet-class>
</servlet>
6. Divers
6.1. Configurer mondrian.properties
Les propriétés sont décrites
dans le Guide
de Configuration.
6.2. Installation de la mémpoire Cache
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.
7. Compatibilité des bases de données
Mondrian fonctionne avec les bases de données
suivantes:
- Apache Derby (connu sous le nom de Cloudscape)
- Firebird
- hsqldb
- IBM DB2
- Informix
- Ingres
- Interbase
- LucidDB
- Microsoft Access
- Microsoft SQL Server
- MySQL
- Oracle
- PostgreSQL
- Sybase
- Teradata
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.
Trucs généraux sur les bases de
données
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.
Ingres
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.
Sybase
mizar_sf
écrit:
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
- mondrian/WEB-INF/datasources.xml
- mondrian/WEB-INF/web.xml
J'ai modifié les paramètres de cette
façon:
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
(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)
8. Problèmes de compatibilité
8.1. Weblogic 6.1 et Xerces
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.
8.2. JDK, Xalan et Tomcat
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.
8.3. Log4j et Tomcat
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
|