Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verbreitung von Oracle-Transaktionen zwischen C++ und Java

Es gibt ein Beispiel in Laurent Schneiders Blog das DBMS_XA-Paket in Oracle zu verwenden, um zuzulassen, dass mehrere Sitzungen in derselben Transaktion arbeiten. Es wäre also möglich, Java- und C++-Sitzungen an derselben Transaktion teilnehmen zu lassen, ohne dass irgendein zusätzlicher Koordinator benötigt wird.

Alternativ können Sie auch Workspace Manager verwenden. Das wurde ursprünglich entwickelt, um extrem lang andauernde Transaktionen zu unterstützen (d. h. die Manipulation vieler räumlicher Daten für eine geplante Entwicklung). Im Wesentlichen können Sie einen Arbeitsbereich erstellen, der in Ihrem Fall ungefähr einer benannten Transaktion entsprechen würde. Sowohl der Java- als auch der C++-Code könnten in diesen Arbeitsbereich eintreten (aus separaten Sitzungen) und beide könnten Daten in diesem Arbeitsbereich manipulieren und festschreiben. Wenn die Transaktion abgeschlossen ist, können Sie den Arbeitsbereich mit dem LIVE-Arbeitsbereich zusammenführen, was einem Commit in einer normalen Transaktion entspricht.

Andererseits stimme ich Ihrer anfänglichen Einschätzung zu, dass die Koordinierung von Transaktionen zwischen Prozessen im Hinblick auf Leistung, Stabilität, Einfachheit und Wartung sehr wahrscheinlich eine schlechte Idee ist. Andererseits kann es durchaus eine legitime Geschäftsanforderung sein, je nachdem, wie der C++-Code zurückgezogen wird (d. h. ob es möglich ist, Code so zu ersetzen, dass Transaktionen entweder ausschließlich Java oder ausschließlich C++ sein können)