Oracle
 sql >> Base de données >  >> RDS >> Oracle

Propagation des transactions Oracle entre C++ et Java

Il y a un exemple sur le blog de Laurent Schneider d'utiliser le package DBMS_XA dans Oracle pour permettre à plusieurs sessions de fonctionner dans la même transaction. Il serait donc possible d'avoir des sessions Java et C++ participant à la même transaction sans avoir besoin d'aucune sorte de coordinateur supplémentaire.

Vous pouvez également envisager d'utiliser Workspace Manager. Cela a été conçu à l'origine pour prendre en charge des transactions extrêmement longues (c'est-à-dire manipuler de nombreuses données spatiales pour un développement proposé). Essentiellement, vous pouvez créer un espace de travail, qui dans votre cas serait à peu près équivalent à une transaction nommée. Les codes Java et C++ peuvent entrer dans cet espace de travail (à partir de sessions distinctes) et tous deux peuvent manipuler et valider des données dans cet espace de travail. Une fois la transaction terminée, vous pouvez ensuite fusionner l'espace de travail avec l'espace de travail LIVE, ce qui équivaut à effectuer une validation dans une transaction normale.

D'un autre côté, je serais tout à fait d'accord avec votre évaluation initiale selon laquelle la coordination des transactions entre les processus est très probablement une mauvaise idée du point de vue des performances, de la stabilité, de la simplicité et de la maintenance. D'un autre côté, il peut s'agir d'une exigence commerciale légitime selon la manière dont le code C++ va être retiré (c'est-à-dire s'il est possible de remplacer le code de manière à ce que les transactions puissent être exclusivement Java ou exclusivement C++)