Lors d’une mission récente, je me suis retrouvé confronté à un problème de configuration Mysql avec TalendTalend est un logiciel ETL permettant de faire de l'Extract, de la Transformation et du chargement (Load) de données. : la limite du nombre de caractères de la fonction GROUP_CONCAT.
De quoi s’agit t-il ? Comment augmenter cette taille maximale ? Quelle est la bonne pratique ? C’est ce que nous allons voir rapidement dans cet article.
La fonction GROUP_CONCAT() permet de regrouper les valeurs non nulles d’un groupe en une chaîne de caractère.
Par exemple, là où la requête suivante ramènerait 5 lignes (un nom par ligne)
FROM client
La requête suivante, elle, ramènerait une seule ligne, concaténation des 5 noms
FROM client
(Note : Si aucun SEPARATOR n’est renseigné, le caractère de séparation par défaut est la virgule)
La chaîne de caractères résultante est cependant limitée en nombre de caractères (par défaut, à 1024 caractères d’après la documentation MySql, mais de mon expérience avec Talend, 342 caractères)
Pour contourner ce problème, il est possible de modifier ce paramètre par l’une des requêtes suivantes :
SET SESSION group_concat_max_len = 1000000;
(Pour appliquer le paramètre jusqu’à que la session courant se termine)
SET GLOBAL group_concat_max_len = 1000000;
(Pour appliquer le paramètre jusqu’au prochain redémarrage du serveur)
Pour modifier le paramètre de version définitive, rendez vous dans le fichier de configuration de MySql
La fonction GROUP_CONCAT de MySql en détails sur http://sql.sh/fonctions/group_concat
Pour appliquer ce paramètre avec Talend, il est nécessaire de lancer la requête de paramétrage avant toute autre requête MySql. Pour ce faire, utiliser le composant tMysqlRow.
Le but d’un job Talend n’étant pas de modifier de manière définitive la configuration et le paramétrage du serveur MySql, je recommande l’utilisation du SET SESSION (et non du SET GLOBAL).
Pour que ce paramètre soit appliqué à l’ensemble du job, il est obligatoire de créer une connexion MySql en début de job et de l’utiliser pour chacune des requêtes concernées (et non pas, de fait, de créer une nouvelle connexion à chaque tMysqlInput).
Voici en image à quoi devrait ressembler votre job (hors traitements)
La code review est une étape clé du développement logiciel moderne. Elle permet, via les Merge Requests (MR), de valider le code, d’éviter les bugs et d’améliorer la qualité des livrables.
Mettre à jour sa stack applicative, c'est assurer la stabilité et la sécurité de ses applications. Il est donc important de faire le suivi des mises à jour pour ne pas se retrouver bloqué à cause de l'accumulation de la dette technique. Sur Symfony, les versions majeures (X.0.0) sont programmées tous les 2 ans, et les versions mineures (1.X.0) sont programmées tous les 6 mois, en mai et en novembre. Chaque version arrive avec son lot de nouveautés qu'il est important de prendre en compte. Les dates de mises à jour étant connues, l'intégration à des Roadmap est alors simplifiée. Mais à quoi faut-il penser lors de ces migrations ?
Dans cet article nous allons voir comment réaliser une comparaison des pixels de deux BufferedImage en multithread pour accélérer la performance.