sql >> Database teknologi >  >> RDS >> Oracle

Udbredelse af Oracle-transaktioner mellem C++ og Java

Der er et eksempel på Laurent Schneiders blog at bruge DBMS_XA-pakken inde i Oracle for at tillade flere sessioner at arbejde i samme transaktion. Så det ville være muligt at få Java- og C++-sessioner til at deltage i den samme transaktion uden at skulle bruge nogen form for yderligere koordinator.

Alternativt kan du overveje at bruge Workspace Manager. Det var oprindeligt designet til at understøtte ekstremt langvarige transaktioner (dvs. at manipulere masser af rumlige data til en foreslået udvikling). Grundlæggende kan du oprette et arbejdsområde, som i dit tilfælde ville svare nogenlunde til en navngivet transaktion. Både Java- og C++-koden kunne komme ind i det arbejdsområde (fra separate sessioner), og begge kunne manipulere og overføre data i det pågældende arbejdsområde. Når transaktionen var gennemført, kunne du flette arbejdsområdet til LIVE-arbejdsområdet, hvilket svarer til at foretage en commit i en normal transaktion.

På den anden side er jeg meget enig i din indledende vurdering af, at koordinering af transaktioner mellem processer med stor sandsynlighed vil være en dårlig idé ud fra et ydeevne, stabilitet, enkelhed og vedligeholdelsessynspunkt. På den anden side kan det meget vel være et legitimt forretningskrav afhængigt af, hvordan C++-koden skal trækkes tilbage (dvs. om det er muligt at erstatte kode på en sådan måde, at transaktioner enten udelukkende kan være Java eller udelukkende C++)



  1. MySQL CURRENT_TIMESTAMP ved oprettelse og ved opdatering

  2. Liquibase - kontrolsum er forskellig fra forskellige databaseleverandører

  3. Hvordan returnerer man kun arbejdstid fra reservationer i PostgreSql?

  4. Vælg forespørgsel med tre, hvor betingelserne er langsomme, men den samme forespørgsel med enhver kombination af to af de tre, hvor betingelserne er hurtige