Article de reference

Transaction imbriquée

Une transaction imbriquée est une transaction de base de données qui est démarrée par une instruction située dans le périmètre d'une transaction déjà démarrée. L'implémentation ...

Une transaction imbriquée est une transaction de base de données qui est démarrée par une instruction située dans le périmètre d'une transaction déjà démarrée.

L'implémentation des transactions imbriquées varie selon les bases de données. Cependant, elles ont en commun le fait que les modifications ne sont visibles par les transactions non liées qu'une fois la transaction externe validée. Autrement dit, la validation d'une transaction interne n'entraîne pas nécessairement la persistance des modifications dans le système.

Dans certaines bases de données, les modifications apportées par une transaction imbriquée ne sont pas visibles par la transaction « hôte » tant que la transaction imbriquée n'est pas validée. Selon certains, cela découle de la propriété d'isolation des transactions.

La capacité à gérer correctement les transactions imbriquées est une condition préalable aux architectures d'applications véritablement orientées composants. Dans une architecture encapsulée orientée composants, des transactions imbriquées peuvent se produire à l'insu du programmeur. Une fonction de composant peut contenir ou non une transaction de base de données (il s'agit du secret encapsulé du composant ; voir « Masquage d'information »). Si un appel à une telle fonction de composant est effectué à l'intérieur d'une directive BEGIN-COMMIT, des transactions imbriquées se produisent. Étant donné que les bases de données courantes comme MySQL n'autorisent pas l'imbrication des directives BEGIN-COMMIT, un framework ou un moniteur de transactions est nécessaire pour gérer ce cas. Il convient de préciser que cette fonctionnalité des transactions imbriquées dépend du SGBD et n'est pas disponible pour toutes les bases de données.

La théorie des transactions imbriquées est similaire à la théorie des transactions plates.

Le secteur bancaire traite généralement les transactions financières à l'aide de transactions imbriquées ouvertes , qui est une variante plus souple du modèle de transactions imbriquées offrant des performances supérieures tout en acceptant les compromis d'incohérence qui en découlent.

Pour en savoir plus

  • Gerhard Weikum, Gottfried Vossen, Systèmes d'information transactionnels : théorie, algorithmes et pratique du contrôle et de la récupération de la concurrence , Morgan Kaufmann, 2002, ISBN1-55860-508-8