Re: Transactions involving multiple postgres foreign servers - Mailing list pgsql-hackers

From Vinayak Pokale
Subject Re: Transactions involving multiple postgres foreign servers
Date
Msg-id CAEySZvhiHUnEf-FiJubB_Xn0z5odtgfdPi5LS7Y7yLtrVWf2iQ@mail.gmail.com
Whole thread Raw
In response to Re: Transactions involving multiple postgres foreign servers  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Responses Re: Transactions involving multiple postgres foreign servers
List pgsql-hackers

Hi All,

Ashutosh proposed the feature 2PC for FDW for achieving atomic commits across multiple foreign servers.
If a transaction make changes to more than two foreign servers the current implementation in postgres_fdw doesn't make sure that either all of them commit or all of them rollback their changes.

We (Masahiko Sawada and me) reopen this thread and trying to contribute in it.

2PC for FDW
============
The patch provides support for atomic commit for transactions involving foreign servers. when the transaction makes changes to foreign servers,
either all the changes to all the foreign servers commit or rollback.

The new patch 2PC for FDW include the following things:
1. The patch 0001 introduces a generic feature. All kinds of FDW that support 2PC such as oracle_fdw, mysql_fdw, postgres_fdw etc. can involve in the transaction.

Currently we can push some conditions down to shard nodes, especially in 9.6 the directly modify feature has
been introduced. But such a transaction modifying data on shard node is not executed surely.
Using 0002 patch, that modify is executed with 2PC. It means that we almost can provide sharding solution using
multiple PostgreSQL server (one parent node and several shared node).

For multi master, we definitely need transaction manager but transaction manager probably can use this 2PC for FDW feature to manage distributed transaction.

2. 0002 patch makes postgres_fdw possible to use 2PC.

0002 patch makes postgres_fdw to use below APIs. These APIs are generic features which can be used by all kinds of FDWs.

    a. Execute PREAPRE TRANSACTION and COMMIT/ABORT PREAPRED instead of COMMIT/ABORT on foreign server which supports 2PC.
    b. Manage information of foreign prepared transactions resolver

Masahiko Sawada will post the patch.

Suggestions and comments are helpful to implement this feature.

Regards,

Vinayak Pokale 


On Mon, Feb 1, 2016 at 11:14 PM, Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
Alvaro Herrera wrote:
> Ashutosh Bapat wrote:
>
> > Here's updated patch. I didn't use version numbers in file names in my
> > previous patches. I am starting from this onwards.
>
> Um, I tried this patch and it doesn't apply at all.  There's a large
> number of conflicts.  Please update it and resubmit to the next
> commitfest.

Also, please run "git show --check" of "git diff origin/master --check"
and fix the whitespace problems that it shows.  It's an easy thing but
there's a lot of red squares in my screen.

--
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

pgsql-hackers by date:

Previous
From: Stephen Frost
Date:
Subject: Re: Renaming of pg_xlog and pg_clog
Next
From: Andres Freund
Date:
Subject: Re: increasing the default WAL segment size