On 3 Jan 2009, at 14:41, Jason Davies wrote:
On 3 Jan 2009, at 14:17, Antony Blakey wrote:
The multikey get in Couch should be a GET, but it can't be unless you want you API to be limited by the (practical) limitation on URL length.

From an API perspective, I think POST and GET mix up idempotency with the ability to have a payload or not, which in practical terms results in people using POST when they should use GET, because those two issues, whilst theoretically orthogonal, and not implemented that way.

Continuing the tangent...

Someone should invent an extension to HTTP whereby a client may issue multiple GET requests at once at the beginning of a single TCP connection. These resources may take time to generate, but are amenable to parallelisation of some kind thus making it advantageous to do this. This is a bit like KeepAlive, except that you can request e.g. multiple CouchDB keys right at the beginning for maximum performance, rather than serially.

This is where I hope someone will pipe up and say this already exists :-)


Aha, http://en.wikipedia.org/wiki/HTTP_pipelining is what I am thinking of.

Although it kind of works as a potential alternative to the multikey POST, it won't return rows in any particular order, where as the current multikey POST returns rows in the same order as the keys specified. There will also be slightly more overhead in doing pipelining, as each request would have to be handled separately on the server-side. In any case, most Web browsers either don't support pipelining or they have it turned off by default, so writing AJAX apps using this would be a no-no.

As CouchDB is HTTP/1.1-compliant, it should support pipelining out-of- the-box.

Jason
--
Jason Davies

www.jasondavies.com

Reply via email to