Stockage SQL de MDM - 8.0

Version
8.0
Language
Français
Product
Talend Data Fabric
Talend MDM Platform
Module
Talend MDM Server
Content
Installation et mise à niveau

Stockage SQL de MDM

Un nouveau stockage pour MDM basé SQL permet à MDM de stocker les données utilisateurs·rices dans un système de gestion de base de données relationnelle (SGBDR).

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 concernant 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.

Principes de fonctionnement du stockage SQL de MDM

Dans MDM, les conteneurs utilisateur sont utilisés pour héberger des données maître et en préparation, alors que les conteneurs système sont utilisés pour stocker des données spécifiques à MDM, par exemple, les informations des utilisateurs et des utilisatrices et les définitions des vues.

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·rice 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 concernant Hibernate, consultez http://www.hibernate.org/ (en anglais).

Configurations courantes pour l'utilisation du stockage SQL de MDM

Une fois l'installation du serveur MDM terminée, vous devez effectuer plusieurs tâches de configuration avant d'utiliser le stockage SQL de MDM.

Procédure

  1. Allez dans le répertoire dans lequel vous avez installé Talend MDM et ouvrez le fichier mdm.conf dans le répertoire <mdm_dir>\conf.
  2. Assurez-vous que la configuration est correcte, comme ci-dessous.
    db.autoPrepare=true
     
    db.datasources=datasources.xml
     
    db.default.datasource=MySQL-Default

    Ces propriétés sont expliquées dans le tableau suivant :

    Propriété

    Description

    db.autoPrepare

    Indique à MDM s'il doit essayer (ou non) de créer lui-même une base de données. Par défaut, la valeur vaut true.

    db.datasources

    Pointe vers un fichier qui fournit des informations sur la connexion à la base de données. Aucune valeur par défaut n'existe pour cette propriété. L'installeur déploie un fichier nommé "datasources.xml". MDM recherche le fichier dans l'ordre suivant :

    1. Dans le dossier vers lequel la propriété système "jboss.server.home.dir" pointe.
    2. À la racine du classpath de l'application MDM.

    db.default.datasource

    Dit à MDM quelle source de données est utilisée par défaut dans le fichier db.datasources. Vous pouvez avoir différentes sources de données telles que "MySQL-Dev" et "MySQL-Prod" et utiliser cette propriété pour passer d'un environnement à un autre.

    Dans cet exemple, mdm.conf définit la valeur de autoPrepare en tant que true, utilise le fichier datasources.xml en tant que fichier de configuration des sources de données et définit la valeur de defaultDataSource en tant que MySQL-Default.

  3. Dans le même répertoire, ouvrez le fichier datasources.xml pour vérifier la configuration des sources de données.
    <datasources xmlns=”http://www.talend.com/mdm/datasources"”>
        <datasource name=”MySQL-DS1> <!-- (1) -->  
            <master>
                <type>RDBMS</type> <!-- (2) -->
                <rdbms-configuration>
                    <dialect>MySQL</dialect> <!-- (3) -->
                    <connection-driver-class>com.mysql.jdbc.Driver</connection-driver-class> <!-- (4) -->
                    <connection-url>jdbc:mysql://10.42.150.15:3306/mdm_dev1</connection-url> <!-- (5) -->
                    <connection-username>root</connection-username> <!-- (6) -->
                    <connection-password>toor</connection-password> <!-- (7) -->
                    <fulltext-index-directory>/var/lucene/indexes/DS1</fulltext-index-directory> <!-- (8) -->
                    <cache-directory>/var/cache/DS1</cache-directory> <!-- (9) -->
                    <contains-optimization>fulltext|disabled|like</contains-optimization> <!-- (10) -->
                    <schema-generation>update</schema-generation>  <!-- (11) -->
                    <properties>
                        <property name="hibernate.show_sql">false</property> <!-- (12)-->
                    </properties>
                    <init>
                        <database-name>mdm_dev1</database-name> <!-- (13) -->
                        <connection-url>jdbc:mysql://10.42.150.15:3306/</connection-url> <!-- (14) -->
                        <connection-username>root</connection-username> <!-- (15) -->
                        <connection-password>toor</connection-password> <!-- (16) -->
                    </init>
                </rdbms-configuration>
            </master>
            <staging>
                <!-- same content: this configures database for the staging area -->
            </staging>
            <system>
                <!-- same content: this configures database for the system storage -->
            </system>
        </datasource>
    </datasources>

    Les explications de chaque propriété dans le fichier de configuration des sources de données sont les suivantes :

    • (1) Nom unique qui identifie la source de données.
    • (2) Dit à MDM de quel type est la source de données. Seule la valeur RDBMS est actuellement supportée.
    • (3) Spécifie un dialecte pour MDM afin d'utiliser des générateurs de requêtes SQL spécifiques à la base de données.
    • (4) Classe de pilote JDBC. Notez que la classe doit se trouver dans le classpath du serveur MDM.
    • (5) URL de la connexion à JDBC. Elle est généralement dépendante du pilote JDBC.
    • (6) nom d'utilisateur ou d'utilisatrice de la connexion.
    • (7) Mot de passe de la connexion.
    • (8) Ce stockage SQL permet les recherches plein texte. Cette propriété dit à MDM où les index plein texte doivent être stockés sur le disque. Si cette propriété est manquante, le stockage ne peut effectuer de recherches plein texte.
    • (9) Cette propriété dit à MDM où le cache de second niveau doit stocker les informations (le cache de second niveau exploite EHCache). Si cette propriété est manquante, le stockage n'utilise pas le cache de second niveau. Cela n'apporte pas plus d'améliorations, car MDM utilise déjà le cache de premier niveau de Hibernate. Cela peut devenir utile pour de grands volumes de données avec de nombreuses demandes en enregistrements aléatoires.
    • (10) Type d'optimisation de requêtes "contains" : la valeur "fulltext" (par défaut) indique que MDM doit utiliser des requêtes plein texte pour des contenus lorsqu'elles sont applicables. La valeur "like" signifie que MDM doit utiliser des instructions de bases de données "LIKE". La valeur "disabled" signifie que MDM retourne une exception chaque fois qu'une requête "contains" est traitée.
    • (11) Indique le type d'actions à effectuer sur le schéma de la base de données.

      Trois valeurs sont valides pour l'élément schema-generation :

      Valeur

      Effet

      Update

      Mise à jour du schéma existant : ajoute des colonnes pour les éléments récemment ajoutés à une entité. Cela n'enlève aucune des restrictions précédentes et aucun élément précédemment enlevé.

      Créer

      Supprime les tables existantes avant de recréer des tables. Vous pouvez utiliser ce mode lorsque vous n'êtes pas sûr du modèle de données. Ce mode enlève les restrictions et colonnes obsolètes ainsi que les données précédentes.

      Valider

      N'effectue aucun changement de schéma. Assurez-vous que le schéma de la base de données peut stocker des enregistrements MDM. En cas d'erreur, l'initialisation du stockage SQL échoue. Pour plus d'informations, consultez le log ou la console de votre serveur.

      Lorsque la valeur de <schema-generation> est "create", des erreurs de création de schéma n'arrêtent pas l'initialisation du stockage SQL : Hibernate génère des instructions SQL qui échouent lorsque vous commencez sur une base de données vide. Pour observer ces erreurs, activez la catégorie Log4j "com.amalto.core.storage" au niveau de DEBUG.

    • (12) Cet exemple indique s'il faut montrer ou non les instructions SQL dans la console. Si sa valeur vaut true, toutes les instructions SQL sont écrites dans la console. Activez cette option pour la résolution de problèmes. Notez que les informations verbeuses sont mises en sortie après avoir activé cette option.
    • (13) Nom de la base de données : il est utilisé lors de l'initialisation du stockage lorsque la valeur de l'option autoPrepare vaut true dans le fichier mdm.conf. MDM essaye de créer une base de données nommée d'après cette valeur sur l'initialisation du stockage.
    • (14) (15) (16) Lorsque l'option autoPrepare est activée, ces identifiants sont utilisés pour créer une base de données nommée d'après (13).

    Tout ce qui est contenu dans les propriétés (“properties”) est adopté tel quel dans la configuration Hibernate. Toutes les propriétés de la section de configuration annulent la configuration que MDM génère (aucun contrôle ou validation n'est effectué sur les valeurs adoptées ici). Pour plus d'informations concernant les propriétés que vous pouvez configurer, consultez la documentation relative à Hibernate.

Utilisation de variables dans le fichier de configuration des sources de données

Vous pouvez utiliser des variables dans la 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://127.0.0.1:3306/${container}</connection-url>
            <database-name>${container}</database-name>
            <init>
                <database-name>${container}</database-name>
                <connection-url>jdbc:mysql://127.0.0.1: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}.

Lorsque vous utilisez des variables dans le fichier de configuration de la source de données,

  • pour Oracle, une base de données avec différents schémas est créée pour les tables master, staging et system et toutes les tables pour les différents conteneurs sont créées dans le schéma correspondant. La table ne peut être supprimée lors du retrait du serveur du conteneur correspondant.
  • pour les autres types de bases de données, une base de données est créée pour chaque conteneur. La base de données peut être supprimée automatiquement lors du retrait du serveur du conteneur correspondant.

Vous pouvez récupérer le fichier de configuration datasources.xml dans l'onglet Téléchargements de cette page pour consulter plus d'exemples d'utilisation des variables, pour différents types de bases de données.

Utilisation de plusieurs vendeurs de bases de données dans le fichier de configuration des sources de données

Vous pouvez utiliser plusieurs vendeurs de bases de données pour les différents stockages de MDM.

Par exemple, MySQL peut être utilisé pour les données utilisateur·rice, 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

Comme MDM supporte différents types de bases de données, vous pouvez effectuer des configurations spécifiques pour chacun d'entre eux.

Serveur SQL 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 serveur SQL. Exécutez la requête SQL suivante :

ALTER DATABASE <database name>   SET READ_COMMITTED_SNAPSHOT ON
  WITH ROLLBACK IMMEDIATE;

Utilisation du stockage SQL de MDM

Procédure

  1. Assurez-vous que les configurations sont correctes en fonction de la base de données utilisée.
  2. Dans le Studio Talend MDM, déployez un modèle de données nommé Product.
    Le nom du conteneur de données doit être le même que celui du modèle de données. Pour initialiser un stockage SQL, les métadonnées de l'entité qu'il gère sont nécessaires, car le schéma de la base de données provient des entités. Actuellement, aucun mapping n'existe entre un conteneur de données et le(s) modèle(s) de données qu'il gère, par conséquent la convention de nommage doit être respectée.
  3. Créez un conteneur de données Product et déployez-le sur le serveur.
    Vous pouvez sélectionner le modèle de données et le conteneur de données dans le référentiel et les déployer sur le serveur. MDM réorganise les déploiements dans le bon ordre (le modèle de données en premier, puis le conteneur de données).