From: | Craig Ringer <craig(at)2ndquadrant(dot)com> |
---|---|
To: | Mikko Tiihonen <Mikko(dot)Tiihonen(at)nitorcreations(dot)com>, Andres Freund <andres(at)2ndquadrant(dot)com> |
Cc: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>, "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Re: [HACKERS] Pipelining executions to postgresql server |
Date: | 2014-11-04 07:55:20 |
Message-ID: | 54588668.2090305@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-jdbc |
On 11/04/2014 07:56 AM, Mikko Tiihonen wrote:
> I also think the async I/O is the way to go. Luckily that has already been done
> in the pgjdbc-ng (https://github.com/impossibl/pgjdbc-ng) built on top
> of netty java NIO library. It has quite good feature parity with the original
> pgjdbc driver.
Huh, it does seem to now. The big omission, unless I'm blind, is support
for COPY. (It also lacks support for JDBC3 and JDBC4, requiring JDK 7
and JDBC 4.1, but that's reasonable enough.)
It now has LISTEN/NOTIFY by the looks, and of course it's built around
binary protocol support.
I freely admit I haven't looked at it too closely. I'm a tad frustrated
by the parallel development of a different driver when the "official"
driver has so much in the way of low hanging fruit to improve.
I have to say I like some aspects of how pgjdbc-ng is being done - in
particular use of Maven and being built around non-blocking I/O.
OTOH, the use of Google Guava I find pretty inexplicable in a JDBC
driver, and since it hard-depends on JDK 7 I don't understand why Netty
was used instead of the async / non-blocking features of the core JVM.
That may simply be my inexperience with writing non-blocking socket I/O
code on Java though.
I'm also concerned about how it'll handle new JDBC versions, as it seems
to lack the JDBC interface abstraction of the core driver.
> I do not think the JDBC batch interface even allow doing updates to multiple
> tables when using prepared statements?
Ah, I missed this before.
That's correct. You get prepared statements _or_ multiple different
statements.
That's a more understandable reason to concoct a new API, and explains
why you're not just solving the issues with batches. Though I still
think you're going to have to fix the buffer management code before you
do anything like this.
--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2014-11-04 08:05:21 | Re: tracking commit timestamps |
Previous Message | Craig Ringer | 2014-11-04 07:35:32 | Re: [JDBC] Pipelining executions to postgresql server |
From | Date | Subject | |
---|---|---|---|
Next Message | Kevin Wooten | 2014-11-04 16:22:27 | Re: [HACKERS] Pipelining executions to postgresql server |
Previous Message | Craig Ringer | 2014-11-04 07:35:32 | Re: [JDBC] Pipelining executions to postgresql server |