Re: Replication - Mailing list pgsql-hackers
From | Randall Jonasz |
---|---|
Subject | Re: Replication |
Date | |
Msg-id | 20020208142932.H6545-100000@nietzsche.trueimpact.net Whole thread Raw |
In response to | Re: Replication (mlw <markw@mohawksoft.com>) |
Responses |
Re: Replication
Re: Replication |
List | pgsql-hackers |
I've been looking into database replication theory lately and have found some interesting papers discussing various approaches. (Here's one paper that struck me as being very helpful, http://citeseer.nj.nec.com/460405.html ) So far I favour an eager replication system which is predicated on a read local/write all available. The system should not depend on two phase commit or primary copy algorithms. The former leads to the whole system being as quick as the slowest machine. In addition, 2 phase commit involves 2n messages for each transaction which does not scale well at all. This idea will also have to take into account a crashed node which did not ack a transaction. The primary copy algorithms I've seen suffer from a single point of failure and potential bottlenecks at the primary node. Instead I like the master to master or peer to peer algorithm as discussed in the above paper. This approach accounts for network partitions, nodes leaving and joining a cluster and the ability to commit a transaction once the communication module has determined the total order of the said transaction, i.e. no need for waiting for acks. This scales well and research has shown it to increase the number of transactions/second a database cluster can handle over a single node. Postgres-R is another interesting approach which I think should be taken seriously. Anyone interested can read a paper on this at http://citeseer.nj.nec.com/330257.html Anyways, my two cents Randall Jonasz Software Engineer Click2net Inc. On Thu, 7 Feb 2002, mlw wrote: > Gavin Sherry wrote: > > Naturally, this would slow down writes to the system (possibly a lot > > depending on the performance difference between the executing machine and > > the least powerful machine in the cluster), but most usages of postgresql > > are read intensive, not write. > > > > Any reason this model would not work? > > What, then is the purpose of replication to multiple masters? > > I can think of only two reasons why you want replication. (1) Redundancy, make > sure that if one server dies, then another server has the same data and is used > seamlessly. (2) Increase performance over one system. > > In reason (1) I submit that a server load balance which sits on top of > PostgreSQL, and executes writes on both servers while distributing reads would > be best. This is a HUGE project. The load balancer must know EXACTLY how the > system is configured, which includes all functions and everything. > > In reason (2) your system would fail to provide the scalability that would be > needed. If writes take a long time, but reads are fine, what is the difference > between the trigger based replicator? > > I have in the back of my mind, an idea of patching into the WAL stuff, and > using that mechanism to push changes out to the slaves. > > Where one machine is still the master, but no trigger stuff, just a WAL patch. > Perhaps some shared memory paradigm to manage WAL visibility? I'm not sure > exactly, the idea hasn't completely formed yet. > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/users-lounge/docs/faq.html > >
pgsql-hackers by date: