Stockage SQL de MDM
Le stockage SQL de MDM fournit les mêmes services que la base de données XML de Talend (dépréciée depuis la version 5.3), tout en permettant une meilleure performance et évolutivité.
Pour utiliser le stockage SQL de MDM, vous n'avez pas besoin de modifier vos Jobs ou modèles de données, car MDM continue à communiquer avec le client via des documents XML. Les composants MDM tels que le tMDMInput, le tMDMOuput et le tMDMBulkload sont supportés lorsqu'une base de données SQL est utilisée.
Cependant, les procédures stockées de MDM doivent être écrites en utilisant les instructions SQL, car la requête est directement exécutée sur la base de données sous-jacente (lors de l'utilisation d'une base de données XML, les procédures stockées étaient écrites en utilisant XQuery).
Pour plus d'informations sur la gestion des problèmes que vous pouvez rencontrer avec le stockage SQL de MDM, consultez Résolution de problèmes relatifs au stockage SQL de MDM.
Cet article s'applique à la version 5.2.0 et suivantes de la solution MDM de Talend.
Principes de fonctionnement du stockage SQL de MDM
À compter de la version 5.3, aucune différence n'existe entre les conteneurs système et les conteneurs utilisateur, car les deux peuvent utiliser le stockage SQL.
Tous les conteneurs de données définis comme n'étant pas utilisateur sont considérés comme des conteneurs système, excepté UpdateReport. Depuis que ce conteneur utilise un format bien défini, il est stocké dans des bases de données SQL lorsque le stockage SQL est activé.
Lorsque MDM reçoit une demande qui peut être soit une requête, soit une demande "create record", soit une demande "update record", il identifie d'abord si la demande se trouve sur un conteneur système ou utilisateur. Il transmet ensuite cette demande au bon stockage.
Chaque stockage SQL est indépendant : il dispose de son propre pool de connexions et de sa propre configuration. Cette indépendance est importante car elle a un impact direct sur le nombre de connexions que MDM établit avec les bases de données SQL. Si vous disposez de deux conteneurs de données et de 20 connexions au minimum, cela signifie que MDM crée 40 (20*2) connexions lors du démarrage.
Pour supporter différents types de SGBDR, le stockage SQL utilise Hibernate en interne pour pouvoir supporter divers types de bases de données.
Pour plus d'informations sur Hibernate, consultez http://www.hibernate.org/ (en anglais).
Configurations courantes pour l'utilisation du stockage SQL de MDM
Procédure
Utilisation de variables dans le fichier de configuration des sources de données
Par exemple, utilisez la variable ${container} dans la configuration des sources de données.
<datasources xmlns=http://www.talend.com/mdm/datasources">
<datasource name=MySQL-DS1?>
<type>RDBMS</type>
<rdbms-configuration>
<connection-url>jdbc:mysql://10.42.150.15:3306/${container}</connection-url>
<database-name>${container}</database-name>
<init>
<database-name>${container}</database-name>
<connection-url>jdbc:mysql://10.42.150.15:3306/</connection-url>
<connection-username>root</connection-username>
<connection-password>toor</connection-password>
</init>
</rdbms-configuration>
</datasource>
</datasources>
La variable ${container} est remplacée par le nom du conteneur de données lors de sa création.
Par exemple, lorsqu'un conteneur "Product" est créé, la valeur de l'élément <connection-url> est la suivante "jdbc:mysql:10.42.150.15:3306/Product". L'élément <database-name> est également remplacé par la valeur "Product".
L'élément <connection-username> accepte aussi la variable ${container}.
Utilisation de plusieurs vendeurs de bases de données dans le fichier de configuration des sources de données
Par exemple, MySQL peut être utilisé pour les données utilisateur, H2 pour les données en préparation et Oracle pour les objets système.
<datasources xmlns="http://www.talend.com/mdm/datasources">
<datasource name="RDBMS-1">
<master>
<type>RDBMS</type>
<rdbms-configuration>
<dialect>MySQL</dialect>
<connection-driver-class>com.mysql.jdbc.Driver</connection-driver-class>
<connection-url>jdbc:mysql://localhost:3306/${container}</connection-url>
<connection-username>root</connection-username>
<connection-password>toor</connection-password>
<fulltext-index-directory>/var/lucene/indexes/DS1</fulltext-index-directory>
<init>
<connection-url>jdbc:mysql://localhost:3306/</connection-url>
<connection-username>root</connection-username>
<connection-password>toor</connection-password>
<database-name>${container}</database-name>
</init>
</rdbms-configuration>
</master>
<staging>
<type>RDBMS</type>
<rdbms-configuration>
<dialect>H2</dialect>
<connection-driver-class>org.h2.Driver</connection-driver-class>
<connection-url>jdbc:h2:target/data/h2_staging_ds2;MVCC=true</connection-url>
<schema-generation>create</schema-generation>
</rdbms-configuration>
</staging>
<system>
<type>RDBMS</type>
<rdbms-configuration>
<dialect>Oracle11g</dialect>
<connection-driver-class>oracle.jdbc.driver.OracleDriver</connection-driver-class>
<connection-url>jdbc:oracle:thin:@fakehost:1521:XE</connection-url>
<connection-username>SYSTEM</connection-username>
<connection-password>password</connection-password>
</rdbms-configuration>
</system>
</datasource>
</datasources>
Configurations spécifiques des bases de données pour l'utilisation du stockage SQL de MDM
SQL Server 2008
Le serveur SQL 2008 peut rapidement rencontrer des problèmes simultanés avec des blocages lors d'insertions ou de mises à jour. Ce type de problèmes survient très rapidement et ne nécessite pas de chargement lourd.
Pour résoudre ce problème, vous devez configurer l'instance de votre SQL Server. Exécutez la requête SQL suivante :
ALTER DATABASE <database name> SET READ_COMMITTED_SNAPSHOT ON
WITH ROLLBACK IMMEDIATE;