Re: [PATCH 10/16] Introduce the concept that wal has a 'origin' node
От | Robert Haas |
---|---|
Тема | Re: [PATCH 10/16] Introduce the concept that wal has a 'origin' node |
Дата | |
Msg-id | CA+TgmobSxPm9unnxkzGP5v5ZToW4bNtSLMYnam=Uam9cq_4JwA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [PATCH 10/16] Introduce the concept that wal has a 'origin' node (Andres Freund <andres@2ndquadrant.com>) |
Ответы |
Re: [PATCH 10/16] Introduce the concept that wal has a 'origin' node
(Andres Freund <andres@2ndquadrant.com>)
|
Список | pgsql-hackers |
On Wed, Jun 20, 2012 at 12:53 PM, Andres Freund <andres@2ndquadrant.com> wrote: > I would prefer the event trigger way because that seems to be the most > extensible/reusable. It would allow a fully replicated databases and catalog > only instances. > I think we need to design event triggers in a way you cannot simply circumvent > them. We already have the case that if users try to screw around system > triggers we give back wrong answers with the planner relying on foreign keys > btw. > If the problem is having user trigger after system triggers: Lets make that > impossible. Forbidding DDL on the other instances once we have that isn't that > hard. So, this is interesting. I think something like this could solve the problem, but then why not just make it built-in code that runs from the same place as the event trigger rather than using the trigger mechanism per se? Presumably the "trigger" code's purpose is going to be to inject additional data into the WAL stream (am I wrong?) which is not something you're going to be able to do from PL/pgsql anyway, so you don't really need a trigger, just a call to some C function - which not only has the advantage of being not bypassable, but is also faster. > Perhaps all that will get simpler if we can make reading the catalog via > custom built snapshots work as you proposed otherwhere in this thread. That > would make checking errors way much easier even if you just want to apply to > a database with exactly the same schema. Thats the next thing I plan to work > on. I realized a problem with that idea this morning: it might work for reading things, but if anyone attempts to write data you've got big problems. Maybe we could get away with forbidding that, not sure. Would be nice to get some input from other hackers on this. >> They could also modify the catalogs directly, although it's possible we >> don't care quite as much about that case (but on the other hand people >> do sometimes need to do it to solve real problems). > With that you already can crash the database perfectly fine today. I think > trying to care for that is a waste of time. You're probably right. > I agree that the focus isn't 100% optimal and that there are *loads* of issues > we haven't event started to look at. But you need a point to start and > extraction & apply seems to be a good one because you can actually test it > without the other issues solved which is not really the case the other way > round. > Also its possible to plug in the newly built changeset extraction into > existing solutions to make them more efficient while retaining most of their > respective framework. > > So I disagree that thats the wrong part to start with. I think extraction is a very sensible place to start; actually, I think it's the best possible place to start. But this particular thread is about adding origin_ids to WAL, which I think is definitely not the best place to start. > I definitely do want to provide code that generates a textual representation > of the changes. As you say, even if its not used for anything its needed for > debugging. Not sure if it should be sql or maybe the new slony representation. > If thats provided and reusable it should make sure that ontop of that other > solutions can be built. Oh, yeah. If we can get that, I will throw a party. > I find your supposition that I/we just want to get MMR without regard for > anything else a bit offensive. I wrote at least three times in this thread > that I do think its likely that we will not get more than the minimal basis > for implementing MMR into 9.3. I wrote multiple times that I want to provide > the basis for multiple solutions. The prototype - while obviously being > incomplete - tried hard to be modular. > You cannot blame us that we want the work we do to be *also* usable for what > one of our major aims? > What can I do to convince you/others that I am not planning to do something > "evil" but that I try to reach as many goals at once as possible? Sorry. I don't think you're planning to do something evil, but before I thought you said you did NOT want to write the code to extract changes as text or something similar. I think that would be a really bad thing to skip for all kinds of reasons. I think we need that as a foundational technology before we do much else. Now, once we have that, if we can safely detect cases where it's OK to bypass decoding to text and skip it in just those cases, I think that's great (although possibly difficult to implement correctly). I basically feel that without decode-to-text, this can't possibly be a basis for multiple solutions; it will be a basis only for itself, and extremely difficult to debug, too. No other replication solution can even theoretically have any use for the raw on-disk tuple, at least not without horrible kludgery. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
В списке pgsql-hackers по дате отправления:
Предыдущее
От: Christopher BrowneДата:
Сообщение: Re: [PATCH 10/16] Introduce the concept that wal has a 'origin' node