No, unfortunately not, as there is a big difference between compression and binary transmission. See the following example:
<Some-Element xyz="345678,901">
<Some-Other-Element abc="54321,876">
<Some-Value my-attribute="123456,789"/>
</Some-Other-Element>
</Some-Element>
With compression, you can certainly get rid of the whitespace, and if the compression algorithms is better you even will have refs instead of element names, but that's it, mostly. What about the numbers? Still transfered untouched, as unique hence uncompressable. So lots of integers and decimals screws compression.
Binary transmission on the other hand will only need four bytes per integer. That makes twelve bytes for all the above attributes.
You would require oids (or some other way to decode) for numbers, boolean, strings, etc for each binary representation, no ?
From:davecramer@gmail.com [mailto:davecramer@gmail.com] On Behalf Of Dave Cramer Sent: Dienstag, 7. Juli 2015 19:54 To: Markus KARG Cc: List Subject: Re: [JDBC] PostgreSQL gaps wrt to java, and jdbc
Looking at the backend code. One possibility is to just use compression to send it over?
Binary represenation of XML and JSON instead of converting it to a String BEFORE transmission. Both JSON and XML essentially are graphs, and can be inflated with whitespace on the driver side AFTER transmission. Same in the other direction (deflate by transmitting binary object graph instead of whitespace-inflated String representation).
I have been actively maintaining the driver off and on since 1999 or so. Recently we have had a flurry of activity and one of the things I noticed was the surprise that PostgreSQL didn't support X or did Y in some unexpected way. Sometimes we are a bit too complacent, and accept things the way they are.
I am wondering what could the server do better that would help JDBC?
Obviously streaming a column is one. Possibly rowid's. Anything else ?