Les connexions aux bases de données sont essentielles pour les services web, mais les ouvrir et les fermer fréquemment peut entraîner des problèmes de performance et augmenter le temps de développement. Une solution bien connue pour atténuer ces défis est le pooling de connexions, qui permet à plusieurs services de partager un ensemble de connexions préétablies. Dans cet article, nous vous guiderons à travers la configuration du pooling de connexions pour une base de données MySQL en utilisant Talend Runtime.

Pourquoi Utiliser le Pooling de Connexions ?

Créer de nouvelles connexions à la base de données chaque fois qu’un service en a besoin peut être coûteux en ressources et en temps. Cela peut dégrader les performances du système et provoquer des blocages, en particulier dans des environnements à fort trafic où de multiples connexions sont ouvertes et fermées constamment. D’autre part, utiliser une seule connexion partagée peut entraîner des problèmes de délai d’attente lorsque de nombreuses requêtes accèdent simultanément à la base de données. Le pooling de connexions résout ces problèmes en maintenant un pool de connexions ouvertes réutilisables par différents services.

Configurer le Pooling de Connexions dans Talend Runtime

1. Installer les Bibliothèques de Pooling de Connexions

Avant de configurer le pooling de connexions, assurez-vous que les bibliothèques nécessaires sont installées dans votre environnement Talend Runtime. La bibliothèque commons-dbcp est essentielle pour gérer les pools de connexions.

/opt/talend/X.X.X/esb/container/bin/client
install –s mvn:commons-dbcp/commons-dbcp/1.4

2. Installer le Pilote JDBC MySQL

Il existe trois méthodes pour installer le pilote JDBC sur votre serveur Karaf Talend :

  • Installation via copie dans le dossier de déploiement : Copiez le pilote JDBC directement dans le dossier de déploiement du conteneur Talend.
    cd /opt/talend/X.X.X/esb/container/deploy/
    cp $TEMP/mysql-connector-java-X.X.X-bin.jar .

    Dans ce cas, le pilote doit rester dans le dossier de déploiement.
  • Installation depuis un dépôt Maven public : Si le pilote MySQL est disponible dans un dépôt Maven public, vous pouvez l’installer directement avec une commande bundle:install.

    /opt/talend/X.X.X/esb/container/bin/client
    bundle:install –s mvn:mysql/mysql-connector-java/X.X.X


  • Installation à partir d’un fichier local : Vous pouvez également installer le pilote JDBC à partir d’un fichier local.
    /opt/talend/X.X.X/esb/container/bin/client
    install –s wrap:file:$TEMP/mysql-connector-java-X.X.X-bin.jar

Ensuite, vérifiez que le bundle est bien installé et actif :

/opt/talend/X.X.X/esb/container/bin/client
bundle:list | grep MySQL

Assurez-vous que le pilote est marqué comme « Actif », ce qui indique qu’il est prêt à être utilisé par une source de données.

3. Configurer la Source de Données et le Pool de Connexions

La façon la plus simple de configurer un pool de connexions est d’utiliser un conteneur Blueprint. Créez un fichier XML nommé datasource-mysql.xml dans le dossier deploy du Runtime et configurez-le comme suit :

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
<bean id="mysqlDataSource" class="com.mysql.cj.jdbc.MysqlConnectionPoolDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/root"/>
<property name="user" value="root"/>
<property name="password" value=""/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.datasources.SharedPoolDataSource" destroy-method="close">
<property name="connectionPoolDataSource" ref="mysqlDataSource"/>
<property name="maxActive" value="20"/>
<property name="maxIdle" value="5"/>
<property name="maxWait" value="-1"/>
</bean>
<service ref="dataSource" interface="javax.sql.DataSource">
<service-properties>
<entry key="osgi.jndi.service.name" value="jdbc/sample"/>
</service-properties>
</service>
</blueprint>

Ce fichier définit une source de données nommée ds-mysql-1. Le bean mysqlDataSource crée le pool de connexions et configure ses propriétés. Le service OSGi enregistre le pool de connexions pour qu’il soit utilisé par les services et routes Talend.

Pour créer des pools de connexions pour d’autres bases de données, il suffit de copier les sections du bean et du service OSGi pour chaque base de données, en modifiant les identifiants et les références.

Vérification et Utilisation du Pool de Connexions

Une fois la source de données configurée, vérifiez qu’elle est bien déployée et active :

/opt/talend/X.X.X/esb/container/bin/client
list | grep xml

Assurez-vous que la source de données est active et que le nom JNDI est correctement configuré.

Considérations Importantes

  • Utilisation en Production : Le pooling de connexions ne fonctionne que dans le Runtime de Talend. Pour tester dans Studio, configurez les connexions de manière classique.
  • Libération des Connexions : Même en utilisant un pool, il est nécessaire de fermer les connexions après utilisation pour les libérer dans le pool.
  • Sécurité : Lors de l’utilisation de Blueprint pour la configuration, il est recommandé de stocker les mots de passe de base de données de manière sécurisée, par exemple en les chiffrant.

Conclusion

Le pooling de connexions est une pratique essentielle pour améliorer les performances des applications utilisant des bases de données avec Talend. En suivant ces étapes, vous pouvez configurer efficacement des pools de connexions pour MySQL et d’autres bases de données, réduisant ainsi les coûts en ressources et en temps de développement.


JDBC Drivers

H2
Bundle maven installation:
bundle:install –s mvn:com.h2database/h2/1.4.196
Bundle installation check:
297 │ Active │ 80 │ 1.4.196 │ H2 Database Engine


Derby
Bundle maven installation:
bundle:install –s mvn:org.apache.derby/derby/10.14.1.0
Bundle installation check:
298 │ Active │ 80 │ 10.14.1000000.1808820 │ Apache Derby 10.14


MySQL
Bundle maven installation:
bundle:install –s mvn:mysql/mysql-connector-java/5.1.45
Bundle installation check:
296 │ Active │ 80 │ 5.1.45 │ Oracle Corporation’s JDBC Driver for MySQL

DB2
Driver download link:
https://artifacts.alfresco.com/nexus/content/repositories/public/com/ibm/db2/jcc/db2jcc4/10
.1/db2jcc4-10.1.jar

Bundle maven installation:
bundle:install –s wrap:file:$TEMP/db2jcc4-10.1.jar
Bundle installation check:
305 │ Active │ 80 │ 0 │ wrap_file__tmp_db2jcc4-10.1.jar


PostgresSQL
Bundle maven installation:
bundle:install –s mvn:org.postgresql/postgresql/9.4.1212
Bundle installation check:
299 │ Active │ 80 │ 9.4.1212 │ PostgreSQL JDBC Driver JDBC42


Oracle
Driver download link:
Oracle driver is not referenced into maven repository.
It can be downloaded directly from Oracle web site.
http://download.oracle.com/otn/utilities_drivers/jdbc/122010/ojdbc8.jar
Bundle maven installation:
bundle:install -s wrap:file:$TEMP/ojdbc8.jar
Bundle installation check:
300 │ Active │ 80 │ 0 │ wrap_file__tmp_ojdbc8.jar

Microsoft SQL Server
JTDS JDBC Driver
Bundle maven installation:
bundle:install -s wrap:mvn:net.sourceforge.jtds/jtds/1.3.1
Bundle installation check:
302 │ Active │ 80 │ 0 │ wrap_mvn_net.sourceforge.jtds_jtds_1.3.1


SQL Server JDBC Driver
Bundle maven installation:
bundle:install -s wrap:mvn:com.microsoft.sqlserver/mssql-jdbc/6.2.2.jre8
Bundle installation check:
296 │ Active │ 80 │ 6.2.2.jre8 │ Microsoft JDBC Driver for SQL Server