PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come elaborare la transazione distribuita all'interno di postgresql?

Sembra che tu sia un po' confuso. Generalmente i sistemi di database supportano due nozioni di tipi di transazione distribuita:

  • Transazioni distribuite native e
  • Transazioni XA.

Le transazioni distribuite native sono generalmente tra server diversi dello stesso RDBMS. Postgres lo supporta anche con il comando dblink_exec. Generalmente la connessione all'altro server viene creata da un cosiddetto collegamento al database. Postgres è un po' più goffo da usare rispetto ad altri RDBMS di livello commerciale. È necessario prima installare un'estensione per poter utilizzare i collegamenti al database. Tuttavia è il postgres rdbms a gestire la transazione.

Le transazioni XA, d'altra parte, sono gestite dal gestore delle transazioni (TM) esterno e ciascuno dei database partecipanti ha il ruolo di una risorsa XA, che si arruola con il gestore delle transazioni. L'RDBMS non può più decidere da solo quando eseguire il commit di una transazione. Questo è il compito del gestore delle transazioni XA. Utilizza un protocollo 2PC per assicurarsi che le modifiche vengano applicate o ripristinate in modo coerente nei database.

Su alcuni sistemi operativi come Windows un gestore delle transazioni fa parte del sistema operativo su altri no. Generalmente java viene fornito con un gestore delle transazioni e l'origine dati corrispondente deve essere configurata per utilizzare XA.