Thread: Proposal for Implenting read-only queries during wal replay (SoC 2007)

Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Florian G. Pflug"
Date:
Hi

I plan to submit a proposal for implementing support for
read-only queries during wal replay as a "Google Summer of Code 2007"
project.

I've been browsing the postgres source-code for the last few days,
and came up with the following plan for a implementation.

I'd be very interested in any feedback on the propsoal - especially
of the "you overlooked this an that, it can never work that way" kind ;-)

greetings, Florian Pflug

Implementing read-only quries during wal archive replay
-------------------------------------------------------

Submitter: Florian Pflug <fgp@phlo.org>

Abstract:
Implementing full support for read-only queries during
wal archive replay is splitted into multiple parts, where
each part offeres additional functionality over what
postgres provides now. This makes tackling this as a
"Google Summer of Code 2007" project feasable, and guarantees
that at least some progress is made, even if solving the
whole problem turns out to be harder then previously
thought.

Parts/Milestones of the implementation:
A) Allow postgres to be started in read-only mode. After   initial wal recovery, postgres doesn't perform writes
anymore.All transactions started are implicitly in   readonly mode. All transactions will be assigned dummy
transactionids, which never make it into the clog.
 
B) Split StartupXLOG into two steps. The first (Recovery) will process   only enough wal to bring the system into a
consistentstate,   while the second one (Replay) replays the archive until it finds no   more wal segments. This replay
happensin chunks, such that   after a chunk all *_safe_restartpoint functions return true.
 
C) Combine A) and B), in the simplest possible way.   Introduce a global R/W lock, which is taken by the Replay part
ofB) in write mode before replaying a chunk, then released,   and immediatly reaquired before replaying the next chunk.
 The startup sequence is modified to do only the Recovery part   where is is doing StartupXLOG now, and to lauch an
extraprocess   (similar to bgwriter) to do the second (Replay) part in the background.   The system is then started up
inread-only mode, with the addition   that the global R/W lock is taken in read mode before starting any   transaction.
Thus,while a transaction is running, no archive replay   happens.
 

Benefits:
*) Part A) alone might be of value for some people in the embedded world,   or people who want to distribute software
theuse postgres. You could   e.g. distribute a CD with a large, read-only database, and your application   would just
needto start postmaster to be able to query it directly from   the CD.
 
*) Read-only hot standby is a rather simple way to do load-balancing, if   your application doesn't depend on the data
beingabsolutely up-to-date.
 
*) Even if this isn't used for load-balancing, it gives the DBA an   easy way to check how far a PITR slave is lagging
behind,therefore   making PITR replication more user-friendly.
 

Open Questions/Problems
*) How do read-only transactions obtain a snapshot? Is it sufficient   to just create an "empty" snapshot for them,
meaningthat they'll   always look at the clog to obtain a transaction's state?
 
*) How many places to attempt to issue writes? How hard is it to   silence them all while in read-only mode.
*) How does the user interface look like? I'm currently leaning towards   a postgresql.conf setting read_only=yes. This
wouldput postgres   into read-only mode, and if a recovery.conf is present, archive   replay would run as a background
process.

Limitations:
*) The replaying process might be starved, letting the slave fall   further and further behind the master. Only true if
theslave   executes a lot of queries, though.
 
*) Postgres would continue to run in read-only mode, even after finishing   archive recovery. A restart would be needed
toswitch it into read-write   mode again. (I probably wouldn't be too hard to do that switch without   a restart, but
itseems better to tackle this after the basic features   are working)
 


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
Doug Knight
Date:
Hi,<br /> Here's some feedback, this is a feature that would be very useful to a project I am currently working on.
<br/><br /> Doug<br /><br /> On Fri, 2007-02-23 at 17:34 +0100, Florian G. Pflug wrote: <blockquote type="CITE"><pre>
 
<font color="#000000">Hi</font>

<font color="#000000">I plan to submit a proposal for implementing support for</font>
<font color="#000000">read-only queries during wal replay as a "Google Summer of Code 2007"</font>
<font color="#000000">project.</font>

<font color="#000000">I've been browsing the postgres source-code for the last few days,</font>
<font color="#000000">and came up with the following plan for a implementation.</font>

<font color="#000000">I'd be very interested in any feedback on the propsoal - especially</font>
<font color="#000000">of the "you overlooked this an that, it can never work that way" kind ;-)</font>

<font color="#000000">greetings, Florian Pflug</font>

<font color="#000000">Implementing read-only quries during wal archive replay</font>
<font color="#000000">-------------------------------------------------------</font>

<font color="#000000">Submitter: Florian Pflug <<a href="mailto:fgp@phlo.org">fgp@phlo.org</a>></font>

<font color="#000000">Abstract:</font>
<font color="#000000">Implementing full support for read-only queries during</font>
<font color="#000000">wal archive replay is splitted into multiple parts, where</font>
<font color="#000000">each part offeres additional functionality over what</font>
<font color="#000000">postgres provides now. This makes tackling this as a</font>
<font color="#000000">"Google Summer of Code 2007" project feasable, and guarantees</font>
<font color="#000000">that at least some progress is made, even if solving the</font>
<font color="#000000">whole problem turns out to be harder then previously</font>
<font color="#000000">thought.</font>

<font color="#000000">Parts/Milestones of the implementation:</font>
<font color="#000000">A) Allow postgres to be started in read-only mode. After</font>
<font color="#000000">    initial wal recovery, postgres doesn't perform writes</font>
<font color="#000000">    anymore. All transactions started are implicitly in</font>
<font color="#000000">    readonly mode. All transactions will be assigned dummy</font>
<font color="#000000">    transaction ids, which never make it into the clog.</font>
<font color="#000000">B) Split StartupXLOG into two steps. The first (Recovery) will process</font>
<font color="#000000">    only enough wal to bring the system into a consistent state,</font>
<font color="#000000">    while the second one (Replay) replays the archive until it finds no</font>
<font color="#000000">    more wal segments. This replay happens in chunks, such that</font>
<font color="#000000">    after a chunk all *_safe_restartpoint functions return true.</font>
<font color="#000000">C) Combine A) and B), in the simplest possible way.</font>
<font color="#000000">    Introduce a global R/W lock, which is taken by the Replay part</font>
<font color="#000000">    of B) in write mode before replaying a chunk, then released,</font>
<font color="#000000">    and immediatly reaquired before replaying the next chunk.</font>
<font color="#000000">    The startup sequence is modified to do only the Recovery part</font>
<font color="#000000">    where is is doing StartupXLOG now, and to lauch an extra process</font>
<font color="#000000">    (similar to bgwriter) to do the second (Replay) part in the background.</font>
<font color="#000000">    The system is then started up in read-only mode, with the addition</font>
<font color="#000000">    that the global R/W lock is taken in read mode before starting any</font>
<font color="#000000">    transaction. Thus, while a transaction is running, no archive replay</font>
<font color="#000000">    happens.</font>

<font color="#000000">Benefits:</font>
<font color="#000000">*) Part A) alone might be of value for some people in the embedded world,</font>
<font color="#000000">    or people who want to distribute software the use postgres. You could</font>
<font color="#000000">    e.g. distribute a CD with a large, read-only database, and your application</font>
<font color="#000000">    would just need to start postmaster to be able to query it directly from</font>
<font color="#000000">    the CD.</font>
<font color="#000000">*) Read-only hot standby is a rather simple way to do load-balancing, if</font>
<font color="#000000">    your application doesn't depend on the data being absolutely up-to-date.</font>
<font color="#000000">*) Even if this isn't used for load-balancing, it gives the DBA an</font>
<font color="#000000">    easy way to check how far a PITR slave is lagging behind, therefore</font>
<font color="#000000">    making PITR replication more user-friendly.</font>

<font color="#000000">Open Questions/Problems</font>
<font color="#000000">*) How do read-only transactions obtain a snapshot? Is it sufficient</font>
<font color="#000000">    to just create an "empty" snapshot for them, meaning that they'll</font>
<font color="#000000">    always look at the clog to obtain a transaction's state?</font>
<font color="#000000">*) How many places to attempt to issue writes? How hard is it to</font>
<font color="#000000">    silence them all while in read-only mode.</font>
<font color="#000000">*) How does the user interface look like? I'm currently leaning towards</font>
<font color="#000000">    a postgresql.conf setting read_only=yes. This would put postgres</font>
<font color="#000000">    into read-only mode, and if a recovery.conf is present, archive</font>
<font color="#000000">    replay would run as a background process.</font>

<font color="#000000">Limitations:</font>
<font color="#000000">*) The replaying process might be starved, letting the slave fall</font>
<font color="#000000">    further and further behind the master. Only true if the slave</font>
<font color="#000000">    executes a lot of queries, though.</font>
<font color="#000000">*) Postgres would continue to run in read-only mode, even after finishing</font>
<font color="#000000">    archive recovery. A restart would be needed to switch it into read-write</font>
<font color="#000000">    mode again. (I probably wouldn't be too hard to do that switch without</font>
<font color="#000000">    a restart, but it seems better to tackle this after the basic features</font>
<font color="#000000">    are working)</font>

<font color="#000000">---------------------------(end of broadcast)---------------------------</font>
<font color="#000000">TIP 5: don't forget to increase your free space map settings</font>

</pre></blockquote>

Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
Tom Lane
Date:
"Florian G. Pflug" <fgp@phlo.org> writes:
> I plan to submit a proposal for implementing support for
> read-only queries during wal replay as a "Google Summer of Code 2007"
> project.

You are discussing this on the wrong list.

> B) Split StartupXLOG into two steps. The first (Recovery) will process
>     only enough wal to bring the system into a consistent state,

How will you know what that is?

> C) Combine A) and B), in the simplest possible way.
>     Introduce a global R/W lock, which is taken by the Replay part
>     of B) in write mode before replaying a chunk, then released,
>     and immediatly reaquired before replaying the next chunk.

That seems certain to result in intolerable performance, for both the
queries and the replay process.
        regards, tom lane


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Florian G. Pflug"
Date:
Tom Lane wrote:
> "Florian G. Pflug" <fgp@phlo.org> writes:
>> I plan to submit a proposal for implementing support for
>> read-only queries during wal replay as a "Google Summer of Code 2007"
>> project.
> 
> You are discussing this on the wrong list.
So what list would be more appropriate?

>> B) Split StartupXLOG into two steps. The first (Recovery) will process
>>     only enough wal to bring the system into a consistent state,
> 
> How will you know what that is?
With the same logic that postgres uses now to bring an file-system backup
into a consistent state when doing PITR.

>> C) Combine A) and B), in the simplest possible way.
>>     Introduce a global R/W lock, which is taken by the Replay part
>>     of B) in write mode before replaying a chunk, then released,
>>     and immediatly reaquired before replaying the next chunk.
> 
> That seems certain to result in intolerable performance, for both the
> queries and the replay process.

That depends entirely on the usecase. And besides, this limitation could
and probably would be adressed in the future. I think a step-by-step
approach is more likely to be successfull then attempting to solve
all problems at once.

greetings, Florian Pflug





Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
Tom Lane
Date:
"Florian G. Pflug" <fgp@phlo.org> writes:
> Tom Lane wrote:
>> You are discussing this on the wrong list.

> So what list would be more appropriate?

My mistake, I read the message header and saw "Postgresql-General" ...
did not look at the actual address ...
        regards, tom lane


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
Heikki Linnakangas
Date:
Florian G. Pflug wrote:
> I plan to submit a proposal for implementing support for
> read-only queries during wal replay as a "Google Summer of Code 2007"
> project.
> 
> I've been browsing the postgres source-code for the last few days,
> and came up with the following plan for a implementation.
> 
> I'd be very interested in any feedback on the propsoal - especially
> of the "you overlooked this an that, it can never work that way" kind ;-)

I had the same thought roughly two years ago:

http://archives.postgresql.org/pgsql-hackers/2005-11/msg01043.php

People weren't very interested in having a read-only mode. I think it 
would be a nice feature if it's not too complicated.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
Glen Parker
Date:
I'll throw in my vote, I would find this quite useful.

-Glen

> Florian G. Pflug wrote:
>> I plan to submit a proposal for implementing support for
>> read-only queries during wal replay as a "Google Summer of Code 2007"
>> project.
>>
>> I've been browsing the postgres source-code for the last few days,
>> and came up with the following plan for a implementation.
>>
>> I'd be very interested in any feedback on the propsoal - especially
>> of the "you overlooked this an that, it can never work that way" kind ;-)




Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
Josh Berkus
Date:
> People weren't very interested in having a read-only mode. I think it
> would be a nice feature if it's not too complicated.

Actually, I think there's high demand for it off this list.  Effectively it 
would allow our "warm backup mode" to become a "hot backup mode".   As SoC 
admin, I'd vote for such a proposal unless someone explains to me why it's 
impossible.

-- 
--Josh

Josh Berkus
PostgreSQL @ Sun
San Francisco


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Joshua D. Drake"
Date:
Josh Berkus wrote:
>> People weren't very interested in having a read-only mode. I think it
>> would be a nice feature if it's not too complicated.
> 
> Actually, I think there's high demand for it off this list.  Effectively it 
> would allow our "warm backup mode" to become a "hot backup mode".   As SoC 
> admin, I'd vote for such a proposal unless someone explains to me why it's 
> impossible.

One thing I would like noted, is whoever does SoC work for PostgreSQL
this year, needs to work *with* the community. Otherwise there is no point.

A good example of the wrong way to do it is the Full Disjunctions
project. Great idea, Great project, not bitrot and hard space because it
hasn't been touched or maintained sense release.

In order to get it into core, it would have needed a lot of work. Let's
make sure we don't duplicate the issue.

Joshua D. Drake




-- 
     === The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
Providing the most comprehensive  PostgreSQL solutions since 1997            http://www.commandprompt.com/

Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL Replication: http://www.commandprompt.com/products/



Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Jim C. Nasby"
Date:
On Fri, Feb 23, 2007 at 10:57:24PM +0000, Heikki Linnakangas wrote:
> Florian G. Pflug wrote:
> >I plan to submit a proposal for implementing support for
> >read-only queries during wal replay as a "Google Summer of Code 2007"
> >project.
> >
> >I've been browsing the postgres source-code for the last few days,
> >and came up with the following plan for a implementation.
> >
> >I'd be very interested in any feedback on the propsoal - especially
> >of the "you overlooked this an that, it can never work that way" kind ;-)
> 
> I had the same thought roughly two years ago:
> 
> http://archives.postgresql.org/pgsql-hackers/2005-11/msg01043.php
> 
> People weren't very interested in having a read-only mode. I think it 
> would be a nice feature if it's not too complicated.

Every customer I've ever talked to about HA has either asked about it or
thought it was a great idea. We should definitely do it if it's not a
load of difficult..
-- 
Jim Nasby                                            jim@nasby.net
EnterpriseDB      http://enterprisedb.com      512.569.9461 (cell)


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Florian G. Pflug"
Date:
Heikki Linnakangas wrote:
> Florian G. Pflug wrote:
>> I plan to submit a proposal for implementing support for
>> read-only queries during wal replay as a "Google Summer of Code 2007"
>> project.
>>
>> I've been browsing the postgres source-code for the last few days,
>> and came up with the following plan for a implementation.
>>
>> I'd be very interested in any feedback on the propsoal - especially
>> of the "you overlooked this an that, it can never work that way" kind ;-)
> 
> I had the same thought roughly two years ago:
> 
> http://archives.postgresql.org/pgsql-hackers/2005-11/msg01043.php
> 
> People weren't very interested in having a read-only mode. I think it 
> would be a nice feature if it's not too complicated.

I think "main" feature would be supporting read-only queries on PITR
slaves. But creating a read-only mode seemed to me (and to you too, it
seems ;-) ) like a good first step towards that goal.

After reading tom's reply to your original proposal, I agree that
supporting a write-protected datadir is not a true subset of
supporting read-only queries on PITR slaves. But I still think
that tackling the read-only datadir support is a good first step -
not the least because it'll help me to get familiar with the
relevent parts of the backend.

I've been thinking about your "trick" of writing "readonly" into
the postmaster.pid file to switch postgres into read-only mode.
On the one hand, it's really neat - if solves the problem of not
being able to create a pid file in the datadir in ro mode, while
on the other hand making sure that there *is* a pid file. But
if I went that way, it would mean there would be *three* configfiles
you have to get right for a working PITR slave with read-only query
support - postgresql.conf, recovery.conf, and postmaster.pid.

So I think I'll rather go with a postgresql.conf setting. I'd
allow three values "hard", "soft" and "off".
"hard" would prevent all writes to the datadir, while
"soft" would be the setting of choice for a PITR slave.

In the "soft" case, postgres would still write a postmaster.pid,
and so be protected against other running postmasters.
In the "hard" case, there would be no such protection - but since
there would be no writes anyway, you don't risk data corruption
in case another postmaster was running - the worst the would happen
is that the read-only postmaster crashes.

greetings, Florian Pflug



Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Florian G. Pflug"
Date:
Josh Berkus wrote:
>> People weren't very interested in having a read-only mode. I think it
>> would be a nice feature if it's not too complicated.
> 
> Actually, I think there's high demand for it off this list.  Effectively it 
> would allow our "warm backup mode" to become a "hot backup mode".   As SoC 
> admin, I'd vote for such a proposal unless someone explains to me why it's 
> impossible.
From my point of view, the most subtle point of the whole proposal is
if not doing
wal-replay _and_ quries at the same time, but rather one after the other,
really solves all the locking issues.

My line of reasoning is that stopping wal replay at a arbitrary point,
and then starting a read-only transaction with an "empty snapshot" (meaning
that all exactly those transactions marked as comitted in the clog are 
assumed to be visible to the transaction) is exactly the same as sending
the backend a SIGKILL when it just wrote the wal record in question,
and then restarting postgres, and starting a transaction.

Since later won't lead to problems today, doing the formed for hot standby
should not lead to problems too.

There reason that I put "Process wal in chucks such that all 
*_safe_restartpoint" functions return true at the end of a chunk" was
the be on the safe side, not because I could find any actual problem
if that requirement was dropped.

Can anyone find a flaw in those arguments?

greetings, Florian Pflug


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
Tom Lane
Date:
"Florian G. Pflug" <fgp@phlo.org> writes:
> My line of reasoning is that stopping wal replay at a arbitrary point,
> and then starting a read-only transaction with an "empty snapshot" (meaning
> that all exactly those transactions marked as comitted in the clog are 
> assumed to be visible to the transaction) is exactly the same as sending
> the backend a SIGKILL when it just wrote the wal record in question,
> and then restarting postgres, and starting a transaction.

The hole in that reasoning is that no one would be satisfied with the
behavior of a Postgres database that was being forcibly restarted every
few seconds.  Yeah, we won't lose transactions that have been promised
committed, but losing a large fraction of transactions-in-progress won't
please anyone.  Nor will queries on a slave that's behaving like that
provide an accurate model of what the same queries would produce if issued
on the master.
        regards, tom lane


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Florian G. Pflug"
Date:
Tom Lane wrote:
> "Florian G. Pflug" <fgp@phlo.org> writes:
>> My line of reasoning is that stopping wal replay at a arbitrary point,
>> and then starting a read-only transaction with an "empty snapshot" (meaning
>> that all exactly those transactions marked as comitted in the clog are 
>> assumed to be visible to the transaction) is exactly the same as sending
>> the backend a SIGKILL when it just wrote the wal record in question,
>> and then restarting postgres, and starting a transaction.
> 
> The hole in that reasoning is that no one would be satisfied with the
> behavior of a Postgres database that was being forcibly restarted every
> few seconds.  Yeah, we won't lose transactions that have been promised
> committed, but losing a large fraction of transactions-in-progress won't
> please anyone.  Nor will queries on a slave that's behaving like that
> provide an accurate model of what the same queries would produce if issued
> on the master.

Sorry, I don't get your point. What do you mean by "loosing a large 
fraction of transactions in progress". You wouldn't loose them - the
master would be running as usual. And after the slave replayed the
wal past their commit record, they would be visible on the slave too.
The point of my argument was just to convice (myself) that wal-logging of
locking requests is not necessary, as long as you don't want to playback
archived wal _and_ run read-only queries on the slave at the same time.

I also don't understand what you mean by "Nor will queries on the slave 
that's behaving like that provide an accurate model of what the same 
queries would produce if issued on the master". Sureley they won't -
after all, this is a kind of asynchronous replication. The most
you can hope fore is to eventually catch up with the master.

And I don't propose that my serialization of wal-replay and running
queries is how PITR master-slave replication should ultimatly look
like. But's it's something that can be done _now_, without changing
what kind of operations are wal-logged. And something that I believe
I can finish in the timeframe of a SoC project.

After I'm done with implementing this limited read-only mode, I'd be very 
interested in trying to extend it, by allow wal-replay and queries
to run concurrently.

greetings, Florian Pflug



Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Jonah H. Harris"
Date:
On 2/23/07, Joshua D. Drake <jd@commandprompt.com> wrote:
> A good example of the wrong way to do it is the Full Disjunctions
> project. Great idea, Great project, not bitrot and hard space because it
> hasn't been touched or maintained sense release.

Don't get me started there.  The decision was split between PostgreSQL
core 50/50 for inclusion in contrib, yet it was not included.  As I
said at the time, people will move on and the project would go to
pgfoundry (which I called the graveyard) and die; which is exactly
what happened.  And, in the Full Disjunctions project's defense, the
community was wholly at fault.  He posted several times for
suggestions and most of the community responses were, "why would we
care about or want that."

The community can't rely on contributors, especially students, to
spend months of their time pushing ideas through a gauntlet of
negativity.

-- 
Jonah H. Harris, Software Architect | phone: 732.331.1324
EnterpriseDB Corporation            | fax: 732.331.1301
33 Wood Ave S, 3rd Floor            | jharris@enterprisedb.com
Iselin, New Jersey 08830            | http://www.enterprisedb.com/


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Joshua D. Drake"
Date:
Jonah H. Harris wrote:
> On 2/23/07, Joshua D. Drake <jd@commandprompt.com> wrote:
>> A good example of the wrong way to do it is the Full Disjunctions
>> project. Great idea, Great project, not bitrot and hard space because it
>> hasn't been touched or maintained sense release.
> 
> Don't get me started there.  The decision was split between PostgreSQL
> core 50/50 for inclusion in contrib, yet it was not included. 

The argument for not including it was valid, it didn't adhere on several
levels including code style and grammatical changes.

The point is, if the author would have done the project in public, the
problem wouldn't have happen.

> As I
> said at the time, people will move on and the project would go to
> pgfoundry (which I called the graveyard) and die; 

I would say that is the author's fault. There are plenty of extremely
vibrant and lively developed projects on pgfoundry.

>which is exactly
> what happened.  And, in the Full Disjunctions project's defense, the
> community was wholly at fault.  He posted several times for
> suggestions and most of the community responses were, "why would we
> care about or want that."

Yes *some* of the community didn't understand it but there were others
in the community who made a specific effort to explain why it was good,
including Josh Berkus.

> 
> The community can't rely on contributors, especially students, to
> spend months of their time pushing ideas through a gauntlet of
> negativity.
> 

Someone who wants to provide a feature to the community can't expect the
community just to open their arms without explanation and full
discussion of a feature.

You don't honestly expect a mature open source project to just accept
any code do you?

For the record, I like the idea of full disjunctions but they must past
quality muster to be included in the community.

Joshua D. Drake



-- 
     === The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
Providing the most comprehensive  PostgreSQL solutions since 1997            http://www.commandprompt.com/

Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL Replication: http://www.commandprompt.com/products/



Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Jonah H. Harris"
Date:
On 2/24/07, Joshua D. Drake <jd@commandprompt.com> wrote:
> The argument for not including it was valid, it didn't adhere on several
> levels including code style and grammatical changes.

IIRC, the only exception to code style was cleaning up some mixed
code/declaration warnings.

> The point is, if the author would have done the project in public, the
> problem wouldn't have happen.

It was public, very few offered suggestions.

> I would say that is the author's fault. There are plenty of extremely
> vibrant and lively developed projects on pgfoundry.

He already did over a year and half research on the subject, wrote the
code for it, published a paper on it, and offered it to the community.Why would he choose to spend more time getting
beatenup for
 
something that's already behind him?

> Yes *some* of the community didn't understand it but there were others
> in the community who made a specific effort to explain why it was good,
> including Josh Berkus.

Yes, there were a few.

> Someone who wants to provide a feature to the community can't expect the
> community just to open their arms without explanation and full
> discussion of a feature.

Perhaps you don't recall.. but his design and research was far more
than almost all other PostgreSQL features.  The only one longer was
perhaps the HOT design.

> You don't honestly expect a mature open source project to just accept
> any code do you?

Obviously not.  That's just a stupid question to ask.

> For the record, I like the idea of full disjunctions but they must past
> quality muster to be included in the community.

Again, he offered to fix anything anyone had issues with... but people
were too busy whining about the feature itself than to provide sound
advice for moving forward.

-- 
Jonah H. Harris, Software Architect | phone: 732.331.1324
EnterpriseDB Corporation            | fax: 732.331.1301
33 Wood Ave S, 3rd Floor            | jharris@enterprisedb.com
Iselin, New Jersey 08830            | http://www.enterprisedb.com/


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Joshua D. Drake"
Date:
> He already did over a year and half research on the subject, wrote the
> code for it, published a paper on it, and offered it to the community.
> Why would he choose to spend more time getting beaten up for
> something that's already behind him?

If he is not willing to proceed with public debate, I fail to see the
purpose in doing the work at all.


> Perhaps you don't recall.. but his design and research was far more
> than almost all other PostgreSQL features.  The only one longer was
> perhaps the HOT design.

Hmmm and look at HOT. That would be an example of how it *should* be
done. HOT has been a constant influx of WIP patches and discussion *to
the community* and thusly to rounding out nicely to be a great feature.

Full Disjunctions did not do that.


>> For the record, I like the idea of full disjunctions but they must past
>> quality muster to be included in the community.
> 
> Again, he offered to fix anything anyone had issues with... but people

Then why didn't he fix them? There were specific problems people had.

> were too busy whining about the feature itself than to provide sound
> advice for moving forward.
> 

Guess we will have to agree to disagree. That is not my recollection of
the events on any level.

Sincerely,

Joshua D. Drake



-- 
     === The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
Providing the most comprehensive  PostgreSQL solutions since 1997            http://www.commandprompt.com/

Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL Replication: http://www.commandprompt.com/products/



Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Jonah H. Harris"
Date:
On 2/24/07, Joshua D. Drake <jd@commandprompt.com> wrote:
> Guess we will have to agree to disagree. That is not my recollection of
> the events on any level.

Guess so.  This topic ended in August and I'm no longer going to argue about it.

-- 
Jonah H. Harris, Software Architect | phone: 732.331.1324
EnterpriseDB Corporation            | fax: 732.331.1301
33 Wood Ave S, 3rd Floor            | jharris@enterprisedb.com
Iselin, New Jersey 08830            | http://www.enterprisedb.com/


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
Bruce Momjian
Date:
Jonah H. Harris wrote:
> On 2/23/07, Joshua D. Drake <jd@commandprompt.com> wrote:
> > A good example of the wrong way to do it is the Full Disjunctions
> > project. Great idea, Great project, not bitrot and hard space because it
> > hasn't been touched or maintained sense release.
> 
> Don't get me started there.  The decision was split between PostgreSQL
> core 50/50 for inclusion in contrib, yet it was not included.  As I
> said at the time, people will move on and the project would go to
> pgfoundry (which I called the graveyard) and die; which is exactly
> what happened.  And, in the Full Disjunctions project's defense, the
> community was wholly at fault.  He posted several times for -----------------------------
> suggestions and most of the community responses were, "why would we
> care about or want that."
> 
> The community can't rely on contributors, especially students, to
> spend months of their time pushing ideas through a gauntlet of
> negativity.

Jonah, I have no idea what "fault" you are trying to blame on the
community in the above statement.  The author didn't discuss the idea
with the community before spending months on it so we have no obligation
to accept it in the core.

--  Bruce Momjian  <bruce@momjian.us>          http://momjian.us EnterpriseDB
http://www.enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Jonah H. Harris"
Date:
On 2/26/07, Bruce Momjian <bruce@momjian.us> wrote:
> Jonah, I have no idea what "fault" you are trying to blame on the
> community in the above statement.  The author didn't discuss the idea
> with the community before spending months on it so we have no obligation
> to accept it in the core.

You're missing the point entirely.  The majority of the (vocal)
community didn't even want the feature and as such, failed to provide
viable suggestions for him to move forward.  As the majority of the
community didn't want the feature, it wouldn't have made a difference
when he proposed it; which would have remained negative nonetheless.

-- 
Jonah H. Harris, Software Architect | phone: 732.331.1324
EnterpriseDB Corporation            | fax: 732.331.1301
33 Wood Ave S, 3rd Floor            | jharris@enterprisedb.com
Iselin, New Jersey 08830            | http://www.enterprisedb.com/


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Joshua D. Drake"
Date:
Jonah H. Harris wrote:
> On 2/26/07, Bruce Momjian <bruce@momjian.us> wrote:
>> Jonah, I have no idea what "fault" you are trying to blame on the
>> community in the above statement.  The author didn't discuss the idea
>> with the community before spending months on it so we have no obligation
>> to accept it in the core.
> 
> You're missing the point entirely.  The majority of the (vocal)
> community didn't even want the feature and as such, failed to provide
> viable suggestions for him to move forward.  As the majority of the
> community didn't want the feature, it wouldn't have made a difference
> when he proposed it; which would have remained negative nonetheless.

There are so many things wrong with the above paragraph. Vocal hackers?

Bruce, wanted real world example
Dave, wanted it in contrib
Berkus, wanted it in contrib
Drake, (not really a hacker) pushed for exposure even though pushed to
pgfoundry
Tgl, wanted real world example, backed it on pgfoundry
Dunstan, liked the idea but wanted it pushed to pgfoundry

From what I can tell Jonah, you are all bark and no bite. Everything you
mention is bogus in this thread. I read the responses (just now) about
full disjunctions and they were not negative. They were more, "Show me
the beef" which is perfectly acceptable when reviewing the possibility
of accepting code.

From what I can tell, unless the hacker said, "You joy! let's rock and
make it part of core NOW!" it would have been considered negative by you.

Sincerely,

Joshua D. Drake


-- 
     === The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
Providing the most comprehensive  PostgreSQL solutions since 1997            http://www.commandprompt.com/

Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL Replication: http://www.commandprompt.com/products/



Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Merlin Moncure"
Date:
getting back on topic (ahem), florian: are you comfortable going ahead
with this?  is there anything you need help with?

merlin


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Florian G. Pflug"
Date:
Merlin Moncure wrote:
> getting back on topic (ahem), florian: are you comfortable going ahead
> with this?  is there anything you need help with?

I'm currently updating my proposal, trying to incorporate the points
people brought up in this thread.

I realized that trying to use the same kind of "read only mode" for
both a standalone postgres (with the datadir on read-only storage),
and a PITR-slave was missguided - 
http://archives.postgresql.org/pgsql-hackers/2005-11/msg01043.php
was really enlightning ;-)

Tom's objects regarding performance are the hardest one to deal with -
I'm currently thinking about ways that the locking requirements could
be relaxed - though I still plan to do a basic implementation first, and 
then try to improve it.

I'll post an updated proposal during the next few days.

greetings, Florian Pflug


Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
Paul Silveira
Date:
Hello,

I just wanted to voice my opinion for this feature...  I've implemented a
few Production applicaitons with PostgreSQL now and would die for that
feature.  Right now, I am constantly trying to find way's to make my data
more available.  I've even resulted to using pg_dump to create read only
copies of the database and placed them behind load balancers to make the
data more available.  Something like this would allow me to quickly leverage
a read only node to scale out the applicaiton...  If it can at all be built,
it would get my first, second and third vote. :)

Regards,

Paul Silveira




Jonah H. Harris-2 wrote:
> 
> On 2/26/07, Bruce Momjian <bruce@momjian.us> wrote:
>> Jonah, I have no idea what "fault" you are trying to blame on the
>> community in the above statement.  The author didn't discuss the idea
>> with the community before spending months on it so we have no obligation
>> to accept it in the core.
> 
> You're missing the point entirely.  The majority of the (vocal)
> community didn't even want the feature and as such, failed to provide
> viable suggestions for him to move forward.  As the majority of the
> community didn't want the feature, it wouldn't have made a difference
> when he proposed it; which would have remained negative nonetheless.
> 
> -- 
> Jonah H. Harris, Software Architect | phone: 732.331.1324
> EnterpriseDB Corporation            | fax: 732.331.1301
> 33 Wood Ave S, 3rd Floor            | jharris@enterprisedb.com
> Iselin, New Jersey 08830            | http://www.enterprisedb.com/
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 7: You can help support the PostgreSQL project by donating at
> 
>                 http://www.postgresql.org/about/donate
> 
> 

-- 
View this message in context:
http://www.nabble.com/Proposal-for-Implenting-read-only-queries-during-wal-replay-%28SoC-2007%29-tf3279821.html#a9197770
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.



Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"Joshua D. Drake"
Date:
Paul Silveira wrote:
> Hello,
> 
> I just wanted to voice my opinion for this feature...  I've implemented a
> few Production applicaitons with PostgreSQL now and would die for that
> feature.  Right now, I am constantly trying to find way's to make my data
> more available. 

Paul unfortunately you have responded to a hijacked thread. Jonah was
speaking about a project that he wishes would have been accepted which
was called Full Disjunctions.

I have not read the read-only queries during wal replay thread but I can
assure you that Jonah's response had nothing to do with it.

Joshua D. Drake


I've even resulted to using pg_dump to create read only
> copies of the database and placed them behind load balancers to make the
> data more available.  Something like this would allow me to quickly leverage
> a read only node to scale out the applicaiton...  If it can at all be built,
> it would get my first, second and third vote. :)
> 
> Regards,
> 
> Paul Silveira
> 
> 
> 
> 
> Jonah H. Harris-2 wrote:
>> On 2/26/07, Bruce Momjian <bruce@momjian.us> wrote:
>>> Jonah, I have no idea what "fault" you are trying to blame on the
>>> community in the above statement.  The author didn't discuss the idea
>>> with the community before spending months on it so we have no obligation
>>> to accept it in the core.
>> You're missing the point entirely.  The majority of the (vocal)
>> community didn't even want the feature and as such, failed to provide
>> viable suggestions for him to move forward.  As the majority of the
>> community didn't want the feature, it wouldn't have made a difference
>> when he proposed it; which would have remained negative nonetheless.
>>
>> -- 
>> Jonah H. Harris, Software Architect | phone: 732.331.1324
>> EnterpriseDB Corporation            | fax: 732.331.1301
>> 33 Wood Ave S, 3rd Floor            | jharris@enterprisedb.com
>> Iselin, New Jersey 08830            | http://www.enterprisedb.com/
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 7: You can help support the PostgreSQL project by donating at
>>
>>                 http://www.postgresql.org/about/donate
>>
>>
> 


-- 
     === The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
Providing the most comprehensive  PostgreSQL solutions since 1997            http://www.commandprompt.com/

Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL Replication: http://www.commandprompt.com/products/



Re: Proposal for Implenting read-only queries during wal replay (SoC 2007)

From
"plabrh1"
Date:
Thanks Josh,

I'll look for the earlier one and try to add it there...

-Paul



-----Original Message-----
From: Joshua D. Drake [mailto:jd@commandprompt.com] 
Sent: Wednesday, February 28, 2007 12:09 AM
To: Paul Silveira
Cc: pgsql-hackers@postgresql.org
Subject: Re: [HACKERS] Proposal for Implenting read-only queries during wal
replay (SoC 2007)

Paul Silveira wrote:
> Hello,
> 
> I just wanted to voice my opinion for this feature...  I've implemented a
> few Production applicaitons with PostgreSQL now and would die for that
> feature.  Right now, I am constantly trying to find way's to make my data
> more available. 

Paul unfortunately you have responded to a hijacked thread. Jonah was
speaking about a project that he wishes would have been accepted which
was called Full Disjunctions.

I have not read the read-only queries during wal replay thread but I can
assure you that Jonah's response had nothing to do with it.

Joshua D. Drake


I've even resulted to using pg_dump to create read only
> copies of the database and placed them behind load balancers to make the
> data more available.  Something like this would allow me to quickly
leverage
> a read only node to scale out the applicaiton...  If it can at all be
built,
> it would get my first, second and third vote. :)
> 
> Regards,
> 
> Paul Silveira
> 
> 
> 
> 
> Jonah H. Harris-2 wrote:
>> On 2/26/07, Bruce Momjian <bruce@momjian.us> wrote:
>>> Jonah, I have no idea what "fault" you are trying to blame on the
>>> community in the above statement.  The author didn't discuss the idea
>>> with the community before spending months on it so we have no obligation
>>> to accept it in the core.
>> You're missing the point entirely.  The majority of the (vocal)
>> community didn't even want the feature and as such, failed to provide
>> viable suggestions for him to move forward.  As the majority of the
>> community didn't want the feature, it wouldn't have made a difference
>> when he proposed it; which would have remained negative nonetheless.
>>
>> -- 
>> Jonah H. Harris, Software Architect | phone: 732.331.1324
>> EnterpriseDB Corporation            | fax: 732.331.1301
>> 33 Wood Ave S, 3rd Floor            | jharris@enterprisedb.com
>> Iselin, New Jersey 08830            | http://www.enterprisedb.com/
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 7: You can help support the PostgreSQL project by donating at
>>
>>                 http://www.postgresql.org/about/donate
>>
>>
> 


-- 
     === The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
Providing the most comprehensive  PostgreSQL solutions since 1997            http://www.commandprompt.com/

Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL Replication: http://www.commandprompt.com/products/