PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie verarbeitet man verteilte Transaktionen in Postgresql?

Es sieht so aus, als ob Sie etwas verwirrt sind. Im Allgemeinen unterstützen Datenbanksysteme zwei Begriffe von verteilten Transaktionstypen:

  • Native verteilte Transaktionen und
  • XA-Transaktionen.

Native verteilte Transaktionen finden im Allgemeinen zwischen verschiedenen Servern desselben RDBMS statt. Auch Postgres unterstützt dies mit dem Befehl dblink_exec. In der Regel wird die Verbindung zum anderen Server über einen sogenannten Datenbanklink hergestellt. Postgres ist etwas umständlicher zu verwenden als andere kommerzielle RDBMS. Sie müssen zunächst eine Erweiterung installieren, um Datenbankverknüpfungen verwenden zu können. Die Transaktion wird jedoch von postgres rdbms verwaltet.

XA-Transaktionen hingegen werden vom externen Transaktionsmanager (TM) verwaltet, und jede der teilnehmenden Datenbanken hat die Rolle einer XA-Ressource, die sich beim Transaktionsmanager anmeldet. Das RDBMS kann nicht mehr selbst entscheiden, wann eine Transaktion festgeschrieben wird. Dies ist die Aufgabe des XA-Transaktionsmanagers. Er verwendet ein 2PC-Protokoll, um sicherzustellen, dass die Änderungen in allen Datenbanken konsistent angewendet oder rückgängig gemacht werden.

Bei einigen Betriebssystemen wie Windows ist ein Transaktionsmanager Teil des Betriebssystems, bei anderen nicht. Im Allgemeinen wird Java mit einem Transaktionsmanager ausgeliefert und die entsprechende Datenquelle muss für die Verwendung von XA konfiguriert werden.