X-Original-To: pgsql-hackers-postgresql.org@postgresql.org Received: from localhost (mx1.hub.org [200.46.208.251]) by postgresql.org (Postfix) with ESMTP id C50E39FB27B for ; Tue, 8 Aug 2006 11:25:10 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.208.251]) (amavisd-new, port 10024) with ESMTP id 80209-01 for ; Tue, 8 Aug 2006 11:24:54 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey- Received: from bugaboo.mu (ns1.bugaboo.mu [213.133.111.57]) by postgresql.org (Postfix) with ESMTP id F25709FB271 for ; Tue, 8 Aug 2006 11:24:54 -0300 (ADT) Received: from [192.168.77.23] (p54BDA997.dip0.t-ipconnect.de [::ffff:84.189.169.151]) (AUTH: CRAM-MD5 markus@bluegap.ch) by bugaboo.mu with esmtp; Tue, 08 Aug 2006 16:24:52 +0200 id 02800089.44D89EB4.000024BA Message-ID: <44D89EA5.5090703@bluegap.ch> Date: Tue, 08 Aug 2006 14:24:37 +0000 From: Markus Schiltknecht User-Agent: Thunderbird 1.5.0.4 (X11/20060713) MIME-Version: 1.0 To: Jose Orlando Pereira CC: pgsql-hackers@postgresql.org, alfranio@lsd.di.uminho.pt Subject: Re: standard interfaces for replication providers References: <44D30B31.2070403@lsd.di.uminho.pt> <200608041733.24228.jop@lsd.di.uminho.pt> <44D70EDA.9060602@bluegap.ch> <200608071940.26750.jop@lsd.di.uminho.pt> In-Reply-To: <200608071940.26750.jop@lsd.di.uminho.pt> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.495 tagged_above=0 required=5 tests=AWL, FORGED_RCVD_HELO, SARE_SPEC_REPLICA X-Spam-Level: X-Archive-Number: 200608/473 X-Sequence-Number: 87966 Hi, Jose Orlando Pereira wrote: > Sorry, stuff was put twice in the zip file making it somewhat confusing. It is > in postgresql-g-0.1/javasrc/GordaInterfaces/docs/gapi.pdf or directly on the > web site at http://gorda.di.uminho.pt/download/reports/gapi.pdf. Thank you. I've just had a quick glance at it. > Can you point out why is it [limiting], given that it is admittedly quite close? An API is always limiting. And if you have to change the API a lot, to fit your needs, what's the point in using it at all? Good APIs don't change a lot. Even if it's quite close, I estimate the effort to port Postgres-R to use your API to be quite large. I.e. the first missing thing that came to my mind was the ordering of processes when waking them up after waiting for a lock. Postgres-R needs the processes to be woken up in the order of writeset arrival. Now, I didn't see anything related in the patch, but the gapi.pdf has 'Predictable Deadlock Handling' in it. I need to take another look... > We'd rather discuss specific issues instead of the general topic of whether to > build APIs around them. We certainly are not married to the proposed > interfaces, although the functionality they capture does reflect our > experience with several algorithms. I still feel that I would need ways too many hooks. Especially when you consider advanced replication features such as data partitioning and remote query execution. What also worries me is the use of triggers. ISTM that using triggers is not deep enough in the database. In the above example, do I really want to fire a trigger every time the database needs to wake up a process? In PostgreSQL a trigger normally runs within a transaction. How do you work around that? I'm operating a level deeper with Postgres-R and really enjoy the freedom I have with C. Having to write a hook or trigger for every change in the database systems seems a lot of work, which I tend to postpone until such a thing is really needed. Regards Markus