What does the library do for connection pooling?

Thanks,
Shashy

On Saturday, August 23, 2014 8:05:37 PM UTC-4, Thomas Heller wrote:
>
> EDN/Transit on the backend might be nice, but a little much for me. I'll 
> take it if you feel like a lot of C. jsonb in 9.4 will have to do for now.
>
> Transparent encoding/decoding is already built-in to the client though, 
> even with array support to encode a clojure set to postgres text[] and back.
>
> See:
> https://github.com/thheller/shadow-pgsql/blob/master/src/examples/repl.clj
>
> https://github.com/thheller/shadow-pgsql/blob/90639eabc9f70ab9f8898b47088e7c07baa4f9d7/test/shadow/pgsql_test.clj#L45-L63
>
> edn-type is in there too, just need to start writing proper tests and 
> documentation.
>
> Cheers,
> /thomas 
>
>
> On Saturday, August 23, 2014 11:24:14 PM UTC+2, Jason Jackson wrote:
>>
>> This makes me wonder if it would make sense to create a Postgresql 
>> plugin that adds a keyword type and other similar types, that would 
>> allow for a more precise roundtrip between Clojure and Postgres. 
>>
>> Jason 
>>
>> On Sat, Aug 23, 2014 at 11:23 AM, Thomas Heller <th.h...@gmail.com> 
>> wrote: 
>> > Hey Kyle, 
>> > 
>> > thanks for the Feedback. Appreciate it. 
>> > 
>> > I think you misunderstood the meaning of a "type" in shadow-psql. A 
>> "type" 
>> > is merely the format of how a given value is represented on the wire 
>> since 
>> > the backend needs to understand what we send it. Postgres supports 2 
>> > different Wire Formats: Text and Binary. While Text is considered the 
>> > "default", binary is usually a lot more efficient. pgjdbc for example 
>> only 
>> > supports the text format. I try to be binary first, which works for 
>> most 
>> > types so far. (Numeric is giving me trouble, but I'll eventually figure 
>> that 
>> > out). I allow overwriting the "types" cause not everything I store in 
>> > postgres is understood by it (EDN, Keywords, ...). By hooking directly 
>> into 
>> > the encode/decode code I can efficiently do the transformation 
>> on-the-fly. 
>> > In my completely unscientific preliminary benchmark I cut the query 
>> time 
>> > from pgjdbc 650ms to shadow-pgsql 200ms and that is for very simple 
>> types 
>> > (50k rows) with no optimizations done yet. I expect the difference to 
>> be 
>> > much larger if you use a timestamp, timestamptz or bytea for example, 
>> as the 
>> > text format for those types carries a bit more overhead. But once 
>> everything 
>> > is stable I will do some real benchmarks. Better performance was not 
>> the 
>> > reason I wrote this, just a pleasant side-effect. 
>> > 
>> > As for the amount of work: its pretty much done. Some more exotic 
>> features 
>> > need to be implemented, but those were never available via JDBC anyways 
>> (eg. 
>> > COPY). I think its stable enough that I will begin moving my projects 
>> > "soon", when I release everything to production I'll probably release a 
>> > 1.0.0-RC. shadow-pgsql can not be layered on top of JDBC, well 
>> technically 
>> > thats what I did for the last 2 years 
>> > (https://gist.github.com/thheller/de7ecce0db58130ae6b7) BUT it 
>> required some 
>> > ugly reflection calls since the PGJDBC does not expose all the 
>> information I 
>> > needed. In the end I decided that I'd feel better to rewrite everything 
>> from 
>> > scratch as the documentation is quite good and the protocol is simple. 
>> > 
>> > Since the non-Java world does just fine without JDBC, I think we can do 
>> too. 
>> > ;) Also, the "Illusion" JDBC provides that you can just switch 
>> databases if 
>> > you feel like it only holds until you start using postgres-specific 
>> > features. Not all databases have arrays, hstore or json types. 
>> > 
>> > Regards, 
>> > /thomas 
>> > 
>> > 
>> > On Saturday, August 23, 2014 5:12:30 PM UTC+2, Kyle Cordes wrote: 
>> >> 
>> >> On Thursday, August 21, 2014 at 1:00 PM, Thomas Heller wrote: 
>> >> > Hey Clojure Folk, 
>> >> > 
>> >> > I'm close to releasing the first alpha version of 
>> >> > https://github.com/thheller/shadow-pgsql a "native" interface to 
>> PostgreSQL 
>> >> > I wrote. 
>> >> > 
>> >> > Its an implementation of the native binary protocol without any 
>> intent 
>> >> > to ever support JDBC. Mostly because that provides a bunch of 
>> features I 
>> >> > never use, but no support for features I wanted. It is mostly Java 
>> but I 
>> >> > will probably only use it from Clojure so that is my primary goal 
>> going 
>> >> > forward. I think the Java bits are close to stable. 
>> >> > 
>> >> > I'm looking for interested beta testers and feedback. I'm bad at 
>> writing 
>> >> > docs cause I never know where to start since there are so many 
>> features and 
>> >> > differences to JDBC. 
>> >> > 
>> >> 
>> >> 
>> >> As a user of both Postgres and Clojure, I find this very interesting. 
>> It’s 
>> >> helps with a couple of pain points around JDBC, such the fact that any 
>> >> nonstandard feature ends up hidden behind a untyped interface passing 
>> >> strings around. But I also have a couple of bits of feedback that are 
>> a 
>> >> little more skeptical: 
>> >> 
>> >> First, the amount of work it will take to get this to a complete 
>> enough 
>> >> state that large projects could safely switch to it, could be 
>> substantial. 
>> >> It makes me wonder if, instead, this could be built as a layer up on 
>> top of 
>> >> the Postgres JDBC driver. This would not be as elegant because it 
>> would not 
>> >> strip out as much unnecessary code, but it may be quite a lot less 
>> work. 
>> >> 
>> >> Second, it seems to most effectively target people who are both very 
>> type 
>> >> oriented, yet are using Java or Clojure. It seems to me that folks who 
>> are 
>> >> so concerned with types that they would step away from the standard 
>> way of 
>> >> talking to databases generically, might be found over in the community 
>> of 
>> >> people using more rigidly typed languages like Haskell etc. 
>> >> 
>> >> Third, although I like the idea of leveraging the features of the tool 
>> you 
>> >> are using (like Postgres), at the same time experiences taught me 
>> that, the 
>> >> more firmly a project seems destined to never switch to a different 
>> brand of 
>> >> database, the more likely some future unexpected opportunity will come 
>> up 
>> >> where that is exactly what is needed. I suppose this is just Murphy’s 
>> Law. 
>> >> 
>> >> I don’t want to sound discouraging though, I really like this idea. 
>> >> 
>> >> -- 
>> >> Kyle Cordes 
>> >> http://kylecordes.com 
>> >> 
>> >> 
>> >> 
>> > -- 
>> > You received this message because you are subscribed to the Google 
>> > Groups "Clojure" group. 
>> > To post to this group, send email to clo...@googlegroups.com 
>> > Note that posts from new members are moderated - please be patient with 
>> your 
>> > first post. 
>> > To unsubscribe from this group, send email to 
>> > clojure+u...@googlegroups.com 
>> > For more options, visit this group at 
>> > http://groups.google.com/group/clojure?hl=en 
>> > --- 
>> > You received this message because you are subscribed to the Google 
>> Groups 
>> > "Clojure" group. 
>> > To unsubscribe from this group and stop receiving emails from it, send 
>> an 
>> > email to clojure+u...@googlegroups.com. 
>> > For more options, visit https://groups.google.com/d/optout. 
>>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to