Re: Peer to peer replication of Postgresql databases

From: <darren(at)up(dot)hrcoxmail(dot)com>
To: Anuradha Ratnaweera <anuradha(at)lklug(dot)pdn(dot)ac(dot)lk>, pgsql-hackers(at)postgresql(dot)org, pgsql-patches(at)postgresql(dot)org
Subject: Re: Peer to peer replication of Postgresql databases
Date: 2002-10-11 17:51:33
Message-ID: 20021011175133.UQJB7661.lakecmmtao02.coxmail.com@lakecmmtab02
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

For give me for responding to the beginning of this thread, but my
comments only apply to this post.

> already looked at ongoing work), in a peer to peer manner. The goal
> is to achive `nearly complete fault tolerence' by replicating data.

A worthy goal indeed!

> - Postmasters are running on different computers on a networked cluster.
> Their data areas are identical at the beginning and recide on local
> storage devices.
>
> - Each postmaster is aware that they are a part of a cluster and they
> can communicate with each other, send multicast requests and look for
> each other's presence (like heartbeat in linux-ha project).

These first two point on extending postmaster for a network cluster
and HA could be a bit tricky. Have you considered using a group
communication system like spread.org that already has the network
cluster and heartbeat built in?

> - There are two types of write queries. Postmasters use seperate
> communication channels for each. One is the sequencial channel which
> carries writes whose order is important, and the non-sequencial
> channel carries write queries whose order is not important.

This puts the burden of determining weather a conflict can happen on
the application or user. Application design could become a bit tricky.
If you plan to use the non-sequential channel in an application, you
would need to make sure there are never any possible conflicts.

>
> - When a frontend process sends non-sequencial write query to a backend,
> it is directly written to the local data area and a multicast is
> sent (preferably asynchronously) to the other postmasters who will
> also update their respective local areas.

What are you planning to send? (SQL, parsed statements, or tuples)

> - When a sequencial-write query is requested, the corresponding
> postmaster informs a main-postmaster (more about in the next point),
> waits for his acknowledgement, and proceeds the same way as the
> non-sequencial write.

This would make the main postmaster handle all the concurrency control for
the replicated system. Are you thinking a two phased commit protocol here?

>
> Or maybe we can completely ignore the main-postmaster concept and
> let the clients broadcast a request to obtain locks etc.

If each system can obtain locks, how will you handle deadlocks across
system boundaries?

>
> Suggessions and critisisms are welcome.
>

Have you taken a look at Postgres-R or the pg-replicaiton project. The goals
are the same as yours, and the approach is some what similar. There is
a mailing to discuss different approaches, and if you like what we are doing
you can certainly participate in the development.

http://gborg.postgresql.org/project/pgreplication/projdisplay.php

Regards

Darren

Browse pgsql-hackers by date

  From Date Subject
Next Message Dave Cramer 2002-10-11 17:59:41 Re: Out of memory error on huge resultset
Previous Message Bruce Momjian 2002-10-11 17:24:44 Re: inline newNode()