Documentation:Choix de la base de données

Un article de AlfrescoWiki.

Sommaire

[modifier] Principe

Alfresco utilise Hibernate pour faire le lien avec la base de données. Hibernate supportant plusieurs systèmes de base de données, il est donc possible d'utiliser Alfresco avec l'un de ces systèmes.

Historiquement, Alfresco est configuré par défaut pour l'utilisation de MySQL. Cette configuration est celle trouvée dans alfresco.war. Depuis la version 1.4, la configuration par défaut de la base de données est située dans le dossier tomcat/shared/classes/alfresco/extension/, elle utilise HSQL. La base de données HSQL est une base de données chargée en mémoire, elle est pratique pour effectuer des tests ou des démos car elle ne nécessite pas l'installation d'un serveur de base de données. Cependant, il est fortement déconseillé de l'utiliser en production !

Alfresco à principalement besoin de 4 informations pour utiliser une base de données :

  • le driver pour piloter la base de données
  • le couple login/password
  • une chaine de connexion
  • le dialect Hibernate

Il faut également récupérer le driver associé à la base de données. Un driver est un fichier .jar qu'il faut placer dans le répertoire tomcat/common/lib/.

[modifier] Configuration

La configuration se fera donc dans le dossier tomcat/shared/classes/alfresco/extension/. Dans une installation standard, vous trouverz très certainement les 3 fichiers suivants :

  • custom-db-and-data-context.xml
  • custom-db-connection.properties
  • custom-hibernate-dialect.properties

Ce sont ces 3 fichiers qui configurent Alfresco pour utiliser HSQL. Il faut supprimer ces 3 fichiers, nous allons en créer de nouveaux plus génériques.

[modifier] custom-repository-context.xml

Copier le fichier custom-repository-context.xml.sample en custom-repository-context.xml. Il n'y a pas de modification à apporter à ce fichier. Ce fichier fait référence à 2 autres fichiers que nous allons créer maintenant.

[modifier] custom-hibernate-dialect.properties

Copier le fichier custom-hibernate-dialect.properties.sample en custom-hibernate-dialect.properties. Ce fichier va indiquer à Alfresco le dialect utilisé par Hibernate pour dialoguer avec la base de données. Il suffit d'éditer ce fichier et de décommenter la ligne correspondant à la base de données utilisées.

[modifier] custom-repository.properties

Copier le fichier custom-repository.properties.sample en custom-repository.properties. Ce fichier va définir les 3 informations restantes (le driver, le couple login/password et la chaine de connexion).

db.username    # login pour se connecter à la base de données
db.password    # mot de passe associé au login
db.driver      # classe Java du driver
db.url         # la chaine de connexion

[modifier] Préparation de la base de données

Avant de démarrer Alfresco, il est nécessaire de préparer la base de données. Alfresco a besoin uniquement d'une base de données vide (les tables seront créées lors du bootstrap) et d'un compte pour y accéder. Le compte doit avoir les privilèges suffisants pour créer des tables et des indexes.

[modifier] Exemples

Ces exemples montrent comment configurer Alfresco avec plusieurs bases de données (MySQL, PostgreSQL et Oracle).

  • nom de la base de données : alfrescoprod
  • nom d'hôte du serveur : dbserver
  • login/password : alfresco/pwd

[modifier] MySQL

#
# MySQL dialect
#
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
  • custom-repository.properties
#
# MySQL connection
#
db.username=alfresco
db.password=pwd
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://dbserver/alfrescoprod
  • préparation de la base de données
# mysql -u root -p
mysql> create database alfrescoprod;
mysql> grant all on alfrescoprod.* to 'alfresco'@'%' identified by 'pwd' with grant option;

[modifier] PostgreSQL

#
# PostgreSQL dialect
#
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
  • custom-repository.properties
#
# PostgreSQL connection
#
db.username=alfresco
db.password=pwd
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://dbserver:5432/alfrescoprod
  • préparation de la base de données
# su - postgres
$ psql template1
create database alfrescoprod
create user alfresco with password 'pwd'
grant all on database alfrescoprod to alfresco
\q

[modifier] Oracle

  • driver disponible ici : sur le site d'Oracle ou auprès de votre DBA
  • custom-hibernate-dialect.properties :
#
# Oracle dialect
#
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
  • custom-repository.properties
#
# Oracle connection
#
db.username=alfresco
db.password=pwd
db.driver=oracle.jdbc.OracleDriver
db.url=jdbc:oracle:thin:@dbserver:1521:alfrescoprod
  • préparation de la base de données

Voir avec votre DBA également :-)