sql >> Database >  >> RDS >> PostgreSQL

Hoe gedistribueerde transacties verwerken binnen postgresql?

Het lijkt alsof je een beetje in de war bent. Over het algemeen ondersteunen databasesystemen twee noties van gedistribueerde transactietypes:

  • Native gedistribueerde transacties en
  • XA-transacties.

Native gedistribueerde transacties zijn over het algemeen tussen verschillende servers van hetzelfde RDBMS. Postgres ondersteunt dit ook met de opdracht dblink_exec. Over het algemeen wordt de verbinding met de andere server tot stand gebracht door een zogenaamde databaselink. Postgres is wat onhandiger in gebruik dan sommige andere commerciële RDBMS. Om databasekoppelingen te kunnen gebruiken, moet u eerst een extensie installeren. De postgres rdbms beheert de transactie echter.

XA-transacties daarentegen worden beheerd door de externe transactiemanager (TM) en elk van de deelnemende databases heeft de rol van een XA-resource, die zich inschrijft bij de transactiemanager. Het RDBMS kan niet meer zelf bepalen wanneer een transactie wordt uitgevoerd. Dit is de taak van de XA transactiemanager. Hij gebruikt een 2PC-protocol om ervoor te zorgen dat de wijzigingen op een consistente manier worden toegepast of teruggedraaid in de databases.

Op sommige besturingssystemen, zoals Windows, maakt een transactiemanager deel uit van het besturingssysteem op andere niet. Over het algemeen wordt Java geleverd met een transactiemanager en moet de bijbehorende gegevensbron worden geconfigureerd om XA te gebruiken.




  1. SQL-query om dubbele waarden te verwijderen in een inner join van 3 tabellen met twee verschillende databases

  2. Functie vervangen in Oracle SQL

  3. Hoe de meest voorkomende woorden in een MySQL-database te vinden en een tweede kolom te berekenen?

  4. Dynamische 'LIKE'-instructie in SQL (Oracle)