Transactions MDM

EnrichVersion
6.5
EnrichProdName
Talend Data Fabric
Talend MDM Platform
Talend Open Studio for MDM
task
Gouvernance de données > Récupération de données
Gouvernance de données > Consolidation de données
Qualité et préparation de données > Enrichissement de données
EnrichPlatform
Talend MDM Server

Les transactions MDM

Chaque opération CRUD (Create, Request, Update, Delete) sur des enregistrements MDM nécessite une transaction.

Une transaction dans MDM est composée de plusieurs transactions de stockage. Par exemple, une seule opération de mise à jour peut comprendre plusieurs instances de stockage : le stockage du conteneur des données maître et le stockage du rapport de mise à jour.

Si une transaction MDM comprend le stockage maître ou le stockage de préparation, la transaction MDM concerne généralement les deux stockages.

Les transactions sont également utilisées pour isoler les opérations de lecture. Par conséquent, toutes les opérations de lecture (même celles comprenant des requêtes en lecture seule) doivent être effectuées dans un contexte de transaction.

Cet article s'adresse aux versions 6.0 et supérieures de Talend MDM.

Utilisation d'appels de rollback ou de commit

MDM peut utiliser les commits et les appels de rollback pour collecter des données supplémentaires (par exemple, accéder aux enregistrements).

Pour les opérations en lecture seule :

  • Si vous pouvez initier des opérations en lecture seule et lire tous les enregistrements que vous souhaitez, appelez un commit. Le commit indique à MDM que l'opération en lecture seule a été réussie et que l'utilisateur peut lire tous les résultats dans la requête.
  • Si vous rencontrez un problème lorsque vous lisez les résultats de la requête, vous devriez appeler un rollback. Cet appel peut être utilisé pour journaliser le fait qu'une requête a été à l'origine d'un problème et que MDM n'est pas capable de fournir des résultats.

API REST pour les opérations de transaction

Une interface MDM REST est disponible pour les opérations de transaction.

Toutes les requêtes HTTP doivent être authentifiées. Autrement dit, un accès ouvert ou anonyme à cette API REST est impossible. Vous devez fournir les bons identifiants (authentification HTTP simple) dans la requête HTTP.

Vous pouvez trouver ci-dessous la liste de toutes les ressources API REST pour les opérations de transaction :

Ressources

Description

GET /talendmdm/services/transactions

Liste toutes les transactions actives avec leurs identifiants

PUT/talendmdm/services/transactions

Crée une nouvelle transaction (et obtient son UUID)

POST/talendmdm/services/transactions/{id}

Commite une transaction

DELETE/talendmdm/services/transactions/{id}

Effectue un rollback

Pour plus d'informations concernant la documentation des ressources de MDM REST de Talend, consultez le Guide utilisateur de l'interface Talend MDM Web User.

Débogage des problèmes de transaction

Vous pouvez utiliser n'importe quelle opération suivante pour déboguer des problèmes de transaction.

Lister les transactions actives

Si vous activez la catégorie Log4j com.amalto.core.server, le serveur affichera toutes les 20 secondes le nombre de transactions actives gérées actuellement et toutes les transactions actives avec leurs identifiants.

Modifier le niveau de log de la transaction MDM pour déboguer

Modifiez le fichier <MDM_ROOT>conf/log4j.xml et assurez-vous que la configuration suivante existe :

<category name="com.amalto.core.server.MDMTransaction">
   <priority value="DEBUG"/>
</category>

Dans ce mode, MDM traque les créations des transactions et fournit plus d'informations sur les transactions problématiques lorsqu'elles sont détectées.

Ajouter le filtre TransactionsGuard

Modifiez le fichier <Tomcat_Path>/webapps/talendmdm/WEB-INF/web.xml et ajoutez les lignes suivantes :

<filter>
   <filter-name>transactionGuardFilter</filter-name>
   <filter-class>com.amalto.core.servlet.TransactionsGuardFilter</filter-class>
   <init-param>
      <param-name>throw.exceptions.BEFORE</param-name>
      <param-value>true</param-value>
   </init-param>
   <init-param>
      <param-name>throw.exceptions.AFTER</param-name>
      <param-value>false</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>transactionGuardFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

Vous ajouterez et activerez ainsi un nouveau filtre servlet à l'application Web.

Ce filtre vérifie avant et après chaque requête HTTP si une transaction est attachée au process HTTP en cours.

Si le filtre trouve une transaction, y compris une trace d'appel de création de transaction si le débogage est activé sur la transaction MDM, le filtre journalise un message d'avertissement. Pour plus d'informations, consultez Modifier le niveau de log de la transaction MDM pour déboguer.

Les paramètres du filtre sont décrits ci-dessous :

Paramètre du filtre

Description

throw.exceptions.BEFORE

Si ce paramètre est défini à true, le filtre envoie une exception avant l'exécution de la requête (en retournant une erreur HTTP 500).

throw.exceptions.AFTER

Si ce paramètre est défini à true, le filtre envoie une exception si une transaction est attachée au processus en cours après l’exécution de la requête (en retournant une erreur HTTP 500 même si la requête s'est exécutée correctement, ce qui n'est pas recommandé).