Hannu Krosing <[EMAIL PROTECTED]> wrote:
> > I think a precommit-vote-commit phase of 2PC can be implemented in
> > command-lavel or protocol-level.
> > 
> > In command-level 2PC, an user application (or application programmer)
> > must know the DBMS is clustered or not (to use PRECOMMIT command).
> > 
> > In protocol-layer 2PC, no new SQL command is required.
> > A precommit-vote-commit phase will be called implicitly.  It means an
> > user application can be used without any modification.  An application
> > can use a traditional way (BEGIN...COMMIT).
> 
> If application continues to use just BEGIN/COMMIT, then the protocol
> level must parse command stream and recognize COMMIT in order to replace
> it with PRECOMMIT, COMMIT. 
> 
> If the communication library has to do that anyway, it could still do
> the replacement without affecting wire protocol, no ?

In my implementation, 'the extended(2PC) FE/BE protocol' is used only in
the communication between the master and slave server(s), not between a
client app and the master server.

libpq <--Normal FE/BE--> (master)postgres <--Extended(2PC)FE/BE--> (slave)postgres
                                          <--Extended(2PC)FE/BE--> (slave)postgres
                                          <--Extended(2PC)FE/BE--> (slave)postgres

A client application and client's libpq can work continuously without
any modification. This is very important. And protocol modification
between master and slave server(s) is not so serious issue (I think).

-- 
NAGAYASU Satoshi <[EMAIL PROTECTED]>

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to